RxJava .zip() 原始类型?
RxJava .zip() raw type?
我正在尝试 zip
两个可观察对象 together.First 是 Single<SomeClass>
类型,第二个是 Observable<SomeOtherClass>
。但是,在 .zip()
函数中,return 类型没有转换为正确的 classes,我得到原始类型(T1
、T2
)。示例:
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*/)
我正在尝试 zip
两个可观察对象 together.First 是 Single<SomeClass>
类型,第二个是 Observable<SomeOtherClass>
。但是,在 .zip()
函数中,return 类型没有转换为正确的 classes,我得到原始类型(T1
、T2
)。示例:
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*/)