的醫生說rxjava2的Maybe和Optional有什麼區別?
概念上講,它是單和Completable提供 聯合裝置,以捕獲在有可能是0或1項 或通過一些反應源發信號的誤差的發射圖案。
但我不確定它的真正含義。它似乎是java8的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 - 已採取的操作和更改。謝謝。 –