我经常不得不做以下事情
// some method
public T blah() {
Optional<T> oneOp = getFromSomething();
if (oneOp.isPresent()) {
Optional<T> secondOp = getFromSomethingElse(oneOp.get())
if (secondOp.isPresent()) {
return secondOp.get()
}
}
return DEFAULT_VALUE;
}
继续检查ifPresent()很麻烦,就像我要返回空检查一样
答案 0 :(得分:12)
使用the flatMap
method,它将使用提供的Optional
将Optional
替换为另一个Function
。
如果存在值,则返回将给定的
Optional
-轴承映射函数应用于该值的结果,否则返回空的Optional
。
然后,您可以使用orElse
,如果存在的话,它将返回您提供的值或默认值。
如果存在值,则返回该值,否则返回
other
。
在这里,我还将对getFromSomethingElse
的调用转换为与Function
所需的flatMap
匹配的方法引用。
public T blah() {
return getFromSomething().flatMap(this::getFromSomethingElse).orElse(DEFAULT_VALUE);
}