本文主要是介绍JDK8中`Optional.orElse()` 和`Optional.orElseGet()`之间的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看例子就明白了
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服务或数据库中获取默认值,它突然变得非常重要。
这篇关于JDK8中`Optional.orElse()` 和`Optional.orElseGet()`之间的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!