java可选:一种不必执行嵌套ifPresent()的好方法
我经常要做以下事情java可选:一种不必执行嵌套ifPresent()的好方法,java,java-8,Java,Java 8,我经常要做以下事情 // some method public T blah() { Optional<T> oneOp = getFromSomething(); if (oneOp.isPresent()) { Optional<T> secondOp = getFromSomethingElse(oneOp.get()) if (secondOp.isPresent()) { return se
// 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;
}
//某种方法
公共T布拉(){
可选的oneOp=getFromSomething();
if(oneOp.isPresent()){
可选的secondOp=getFromSomethingElse(oneOp.get())
if(secondOp.isPresent()){
返回secondOp.get()
}
}
返回默认值;
}
继续检查ifPresent()相当麻烦,好像我又开始执行空检查了一样,如果存在,将使用提供的函数
用另一个可选
替换可选
如果存在值,则返回将给定的可选
-轴承映射函数应用于该值的结果,否则返回空的可选
然后,您可以使用它(如果存在)返回值,或者返回您提供的默认值
如果存在值,则返回该值,否则返回other
在这里,我还将对getFromSomethingElse
的调用转换为一个方法引用,该方法引用将匹配flatMap
所需的函数
public T blah() {
return getFromSomething().flatMap(this::getFromSomethingElse).orElse(DEFAULT_VALUE);
}
试试“flatMap”和“orElse”。