我可以实际从lambda返回从方法返回并中断其执行吗?

use*_*644 5 java lambda optional

例如:

private String test(Optional myOptional)
{
    myOptional.ifPresent(() -> return "1");
    return "0";
}
Run Code Online (Sandbox Code Playgroud)

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

Grz*_*rek 8

你不能"破坏"lambda体并从封闭方法返回一个值.该return只在lambda体的范围在lambda使用的作品.

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

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

另外,请记住,Optionals不应该用作方法参数:

为什么Java 8的Optional不能在参数中使用