RxJava .zip () необработанный тип? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь zip две наблюдаемые вместе. Первый тип Single<SomeClass>, а второй Observable<SomeOtherClass>.Однако в функции .zip() возвращаемые типы не приводятся к правильным классам, я получаю необработанные типы (T1, T2).Пример:

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

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

И если я попытаюсь таким образом (поскольку я "копирую" только 2 наблюдаемые):

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

Если я попытаюсь Observable.zip(Observable.range(...),Observable.interval(...), (integer,long) -> ...), я получу правильные приведения.

Я не могу понять, почему это не приведёт к моим объектам класса в моем примере выше, какие-либо предложения?

1 Ответ

1 голос
/ 25 июня 2019

Используя zip (), вы получаете несколько объектов на входе и преобразуете их в OUT. Поэтому вам нужно указать какой-то тип вывода:

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

В приведенном выше примере компилятору известно, что тип возвращаемого значения для вашей лямбды равен NewOtherClass.

Обратите внимание, что Single и Observable нельзя использовать в одной цепочке без дополнительного преобразования (примечание .toObservable() ниже):

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