RxJava - 将列表转换为通用集合
RxJava - Casting a List to a generic Collection
使用 RxJava 创建通用集合的正确方法是什么?如果我执行以下操作,我会得到类型不匹配,因为它 returns 一个 Single>。我也试过 flatMapSingle() 和 collect(),但我不确定如何给它正确的类型。
public Single<Collection<MyObj>> someMethod() {
Observable<Collection<MyObj>> someObservable = getData();
return someObservable
.flatMapIterable(item -> item)
.filter(someFilter)
.toList();
}
不幸的是,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);
}
使用 RxJava 创建通用集合的正确方法是什么?如果我执行以下操作,我会得到类型不匹配,因为它 returns 一个 Single>。我也试过 flatMapSingle() 和 collect(),但我不确定如何给它正确的类型。
public Single<Collection<MyObj>> someMethod() {
Observable<Collection<MyObj>> someObservable = getData();
return someObservable
.flatMapIterable(item -> item)
.filter(someFilter)
.toList();
}
不幸的是,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);
}