JDK8中`Optional.orElse()` 和`Optional.orElseGet()`之间的区别
程序员文章站
2022-06-08 22:17:27
...
看例子就明白了
static String B() {
System.out.println("B()...");
return "B";
}
public static void main(final String... args) {
System.out.println(Optional.of("A").orElse(B()));
System.out.println(Optional.of("A").orElseGet(() -> B()));
}
prints
B()...
A
A
调用orElse时,将评估apicall()。值并将其传递给方法。 然而,在orElseGet的情况下,仅当oldValue为空时才进行评估。 orElseGet允许延迟评估。也就是说:orElse(T)无论前面Optional容器是null还是non-null,都会执行orElse里的方法,orElseGet(Supplier)并不会
当然,在这个例子中,差异可能是不可测量的,但是如果你必须从远程Web服务或数据库中获取默认值,它突然变得非常重要。
上一篇: S5P6818点亮LED灯
下一篇: 附加属性的使用-调用虚拟键盘
推荐阅读
-
解析iptables中SNAT和MASQUERADE之间的区别
-
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
-
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
-
Python中的a+=b和a=a+b之间的区别是什么?
-
ASP.NET Core中GetService()和GetRequiredService()之间的区别
-
(转)struts2中redirect,redirectAction和chain的区别 以及 如何在action之间传参数
-
JS中var、let和const之间的区别
-
清朝士兵中兵和勇就一字之差 他们之间的区别到底有多大呢
-
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
-
JDK8中`Optional.orElse()` 和`Optional.orElseGet()`之间的区别