Оператор карты для создания нового Flux - PullRequest
0 голосов
/ 27 января 2019

Я хочу создать новый поток из другого потока.Я знаю, что с помощью оператора преобразования в RxJava я могу создать новый Observable, разве это не так во Flux?

Я пробовал следующее:

Flux f1 = Flux.just("one","two","three");
Flux f2 = f1.map(String::length);

Но я получаю ошибку компиляции из своей IDE.

Следующее просто соответствует:

Flux f1 = Flux.just("one","two","three").map(String::length);

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Карта методов (Функция) в типе Flux не применима для аргументов (String :: length), которые вы должны сделать следующим образом:

Flux<String> f1 = Flux.just("one", "two", "three");
Flux f2 = f1.map(String::length);
0 голосов
/ 28 января 2019

Это ваш код:

Flux f1 = Flux.just("one","two","three");
Flux f2 = f1.map(object -> object.length());//compilation error

Поскольку вы не указали тип данных для Flux f1, оператор map не может определить тип данных, с которыми он имеет дело.с.Следовательно, он рассматривает его как тип Object, у которого нет метода length().

Предоставление типа данных должно обеспечить его работу.

Flux<String> f1

Где как,в Flux f1 = Flux.just("one","two","three").map(String::length); оператор map знает, что он работает с Flux из String, поэтому он может разрешить метод length().

0 голосов
/ 27 января 2019

вы должны объявить f1 как Flux<String>

...