使用RxJava创建通用集合的正确方法是什么?如果执行以下操作,则会得到类型不匹配的信息,因为它会返回Single >。我也尝试过flatMapSingle()和collect(),但不确定如何为其提供正确的类型。
public Single<Collection<MyObj>> someMethod() {
Observable<Collection<MyObj>> someObservable = getData();
return someObservable
.flatMapIterable(item -> item)
.filter(someFilter)
.toList();
}
答案 0 :(得分:2)
不幸的是,Java不像其他语言那样具有协变性和协变性,因此无法将Observable<List<T>>
分配给Observable<Collection<T>>
。您必须手动上载值类型:
public Single<Collection<MyObj>> someMethod() {
Observable<Collection<MyObj>> someObservable = getData();
return someObservable
.flatMapIterable(item -> item)
.filter(someFilter)
.toList()
.map(list -> (Collection<MyObj>)list);
}