我想做类似以下的事情,其中 x
将从包含函数返回,并且不会“继续处理”(如果存在可选):
stuff().that().returns().optional().ifPresent(x -> return x);
// otherwise continue processing
...
return alternateResult;
像这样的东西也可以:
if (stuff().that().returns().optional().isPresent()) {
return thatResult;
}
// otherwise continue processing
...
return alternateResult;
但是这样的想法行不通:return
lambda 内部只是从 lambda 返回,在第二种情况下,在检查 isPresent()
后我没有返回闭包内的值。我可以使用更简洁的习语吗?
最佳答案
如果您可以在 lambda 中完成其余处理,您可以使用 orElseGet
:
return stuff().that().returns().optional().orElseGet(() -> {
...
return alternateResult;
});
关于java - 一种返回可选值(如果存在)而不保存或派生两次的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36145206/