java - 我真的可以从 lambda 返回以从方法返回并中断它的执行吗?

标签 java lambda option-type

例如:

private String test(Optional myOptional)
{
    myOptional.ifPresent(() -> return "1");
    return "0";
}

所以当我调用 test(myOptional) 时,它将返回“1”;

最佳答案

您不能“突破” lambda 主体并从封闭方法返回值。 lambda 中使用的 return 仅在 lambda 主体范围内起作用。

惯用的方法是正确使用 Optional API:

private String test(Optional<Object> myOptional) {
    return myOptional
      .map(s -> "1")
      .orElse("0");
}

此外,请记住 Optional 不应用作方法参数:

Why should Java 8's Optional not be used in arguments

关于java - 我真的可以从 lambda 返回以从方法返回并中断它的执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45484618/

相关文章:

java - 在 try catch block java 中获取未处理的异常

java - 处理 'not' 条件作为流操作中的方法引用

haskell - 在Haskell中计算 "Just int"的模块

java - 在 java derby db 中执行选择请求时如何将磁盘 100 减少到最小使用量

c# - 从 C 到面向对象编程的最佳学习途径?

java - 如何更有效地在 3 个不同的下拉菜单中输入日期、月份、年份

c++ - 当 T 不可移动构造时,为什么不删除 std::optional 的移动构造函数?

java - git java 包装器 - git pull 永远不会结束

c# - 如何即时将 lambda 表达式转换为 Sql 查询?

java - JavaOptional 与传统的缺失值处理有何不同?或者如何正确使用JavaOptional