java - 一种返回可选值(如果存在)而不保存或派生两次的方法?

标签 java lambda java-8 option-type

我想做类似以下的事情,其中​​ 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/

相关文章:

java - 重新启动 GlassFish 4 的正确方法是什么?

C# 根据模型中的枚举属性将列表<模型> 转换为字典<枚举,列表<模型>>?

java - 使用 Java 从数据库 View 中未检索到结果

java - 从 Java 解析 Cobol 字段描述

java - 使用 isPresent 方法在 Java8 中列出过滤器

java - 将二维字符数组转换为一维字符串数组

java - 为什么 Collections.synchronizedList(list) 在内部使用 instanceof 检查?

java - 从 CompletableFuture 抛出异常

java - ObjectInputStream 在 readObject() 期间永远阻塞

c++ - std::async 仅同步工作