Оператор дескриптора реактора возвращает объект?

#spring-webflux #project-reactor

#spring-webflux #проект-реактор

Вопрос:

Я хочу использовать handle оператор, но его результат не того типа, который я ожидаю, он всегда Object

         Mono.just("lol").handle((string, sink) -> {
            if(!string.equals("lol")) {
                sink.error(new RuntimeException("not lol!"));
            } else {
                sink.next(2);
            }
        }).doOnNext(myInt -> { // expecting myInt to be an integer but is Object
            System.out.println(myInt);
        });
  

Как я могу заставить дескриптор распознавать тип (аналогично тому, как map или flatMap распознает возвращаемый тип)?

Всегда ли я должен использовать cast оператор?

Ответ №1:

Используйте дженерики.

     Mono.<String>just("lol").<Integer>handle((string, sink) -> {
        if(!string.equals("lol")) {
            sink.error(new RuntimeException("not lol!"));
        } else {
            sink.next(2);
        }
    }).doOnNext(myInt -> {
        System.out.println(myInt);
    })