如果不存在Optional的值,我想退出当前的方法/函数。
我尝试过一种幼稚的方法,将return语句放入.orElseGet(),但这似乎没有用。到目前为止,最好的替代方法似乎是:
private void foo(Set<ISomeObject> someIterable) {
Optional<ISomeObject> myObjectOpt = someIterable
.stream()
.filter(...)
.findFirst();
if(!myObjectOpt.isPresent()){
return;
}
ISomeObject myObject = myObjectOpt.get();
// do something with myObject
}
这似乎比旧的Nullcheck可读性更好,还有其他选择吗?
最佳答案
您可以将Consumer
传递给ifPresent
并在使用者中执行您想做的任何事情:
private void foo(Set<ISomeObject> someIterable) {
someIterable
.stream()
.filter(...)
.findFirst()
.ifPresent(x -> {
// do something with x
});
// do nothing!
}