我经常要做以下事情
// 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;
}
Run Code Online (Sandbox Code Playgroud)
继续检查ifPresent()就好像我回到做空检查一样非常麻烦
rge*_*man 12
如果存在,使用提供的flatMap方法替换Optional另一个Optional方法Function.
如果存在
Optional值,则返回将给定的承载映射函数应用于该值的结果,否则返回空值Optional.
然后,您可以使用orElse该值(如果存在)返回值或您提供的默认值.
如果存在值,则返回该值,否则返回
other.
在这里,我还将调用转换getFromSomethingElse为与Function所需的匹配的方法引用flatMap.
public T blah() {
return getFromSomething().flatMap(this::getFromSomethingElse).orElse(DEFAULT_VALUE);
}
Run Code Online (Sandbox Code Playgroud)