RxJava-将列表转换为通用集合

时间:2019-10-24 14:56:35

标签: rx-java rx-java2

使用RxJava创建通用集合的正确方法是什么?如果执行以下操作,则会得到类型不匹配的信息,因为它会返回Single >。我也尝试过flatMapSingle()和collect(),但不确定如何为其提供正确的类型。

public Single<Collection<MyObj>> someMethod() {
  Observable<Collection<MyObj>> someObservable = getData();
  return someObservable 
         .flatMapIterable(item -> item)
         .filter(someFilter)
         .toList();
}

1 个答案:

答案 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);
}
相关问题