Док говоритВ чем разница между возможностями rxjava2 и необязательными?
Концептуально, это объединение одного и Completable обеспечение означает, чтобы захватить образец излучения там, где может быть 0 или 1 элемент или ошибка сигнализируют какой-реактивного источника.
Но я не уверен, что это на самом деле означает. Кажется, это java8's Optional
.
Следующие два кода имеют одинаковый результат, но я не знаю, что может сделать Maybe
, и Optional
не может (или громоздко) сделать.
@Test
public void testMaybe1() {
Observable.just(3, 2, 1, 0, -1)
.map(i -> {
try {
int result = 6/i;
return Maybe.just(result);
} catch (Exception e) {
return Maybe.empty();
}
})
.blockingForEach(maybe -> {
logger.info("result = {}", maybe.blockingGet());
}
);
}
@Test
public void testMaybe2() {
Observable.just(3, 2, 1, 0, -1)
.map(i -> {
try {
int result = 6/i;
return Optional.of(result);
} catch (Exception e) {
return Optional.empty();
}
})
.blockingForEach(opt -> {
logger.info("result = {}", opt.orElse(null));
}
);
}
Результаты одинаковы:
result = 2
result = 3
result = 6
result = null
result = -6
В rxJava1 мой API используется для возврата Observable<Optional<T>>
, Является ли это плохой запах? Должен ли я перейти на Observable<Maybe<T>>
?
Не обязательно быть асинхронным событием, может быть синхронным. –
@DaveMoten - сделанные точки и сделанные изменения. Благодарю. –