【发布时间】:2020-12-22 07:07:21
【问题描述】:
我正在使用 Java 的 Optional,并认为它的工作方式类似于 if else 块。但是在下面的代码中,即使name 变量不是null,orElse 块的内容也会被执行。有什么解释吗?
import java.util.Optional;
class Scratch {
public static void main(String[] args) {
String name = "some text";
System.out.println(
Optional.ofNullable(name)
.map(n -> mapped())
.orElse(getOrElse()));
}
static String mapped(){
System.out.println("mapped -- block executed");
return "mapped";
}
static String getOrElse(){
System.out.println("orElse -- block executed");
return "orElse";
}
}
输出:
mapped -- block executed
orElse -- block executed
mapped
【问题讨论】:
标签: java function lambda optional