RxJava .zip() 原始类型?

RxJava .zip() raw type?

我正在尝试 zip 两个可观察对象 together.First 是 Single<SomeClass> 类型,第二个是 Observable<SomeOtherClass>。但是,在 .zip() 函数中,return 类型没有转换为正确的 classes,我得到原始类型(T1T2)。示例:

Single<SomeClass> o1 = ....
Observable<SomeOtherClass> o2 = ....

Observable.zip(o1,o2, (u,u2) -> ...) // here I get 2 raw types

如果我尝试这种方式(因为我只有 "zipping" 2 个可观察对象):

 o1.zipWith(o2, (someClass, u) -> ...) //here only o1 is cast to class instance

如果我尝试 Observable.zip(Observable.range(...),Observable.interval(...), (integer,long) -> ...) 我会得到正确的转换。

我不明白为什么它不会投射到我上面示例中的 class 对象,有什么建议吗?

使用 zip() 你可以在输入中得到一些对象,然后在 OUT 中将它们转换成不同的东西。 所以你需要指定一些输出类型:

Observable.zip(o1, o2, (u1,u2) -> new NewOtherClass(u1, u2))

在上面的示例中,编译器知道您的 lambda 的 return 类型是 NewOtherClass

请注意,Single 和 Observable 不能在没有额外转换的情况下在同一链中使用(请注意下面的 .toObservable()):

 Observable.zip(o1.toObservable(), o2, (u1,u2) -> /*return do something*/)