例如:

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

10-08 00:48