有没有办法将 Java8 可选返回值与在 null 上打印消息结合起来?

haw*_*eye -3 java null java-8 option-type

我从这段代码开始:

String startingValue = getMyValue();
String finishingValue = "";
if (startingValue != null) {
    finishingValue = startingValue;
} else {
    System.out.println("Value was null");
}
Run Code Online (Sandbox Code Playgroud)

我想使用 Java 8 选项将其转换为如下所示:

Optional<String> startingOptional = getMyOptional();
String finishingValue =
        startingOptional
                .map(value -> value)
                .orElse(System.out.println("value not found"));
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法将 Java8 可选返回值与在 null 上打印消息结合起来?

JB *_*zet 5

使用orElseGet

Optional<String> startingOptional = getMyOptional();
String finishingValue = startingOptional.orElseGet(() -> {
    System.out.println("value not found");
    return "";
});
Run Code Online (Sandbox Code Playgroud)

使用.map(value -> value)是无用的:将值转换为其本身不会改变任何东西。