rxjava2的Maybe和Optedstin有什么区别?
文档说
从概念上讲,它是单一和可兼容的并集,提供了捕获发射模式的方法,其中可能存在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>>