ドクター曰く
概念的には、これは Single と Completable の結合であり、0 または 1 のアイテム、または何らかのリアクティブ ソースによって通知されたエラーが存在する可能性のある放出パターンをキャプチャする手段を提供します。
しかし、それが本当に何を意味するのかはわかりません。java8 のようOptional
です。
Maybe
次の 2 つのコードは結果は同じですが、何ができて何が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>>
ますか?