java 9 OR和java 8 orElseGet之间的区别

Java9为Optional添加了.or方法.现有的.orElseGet有何不同?

checkUserInMemory(userId).or(() -> checkUserInDB(userId));
最佳答案
主要是两者的返回类型各不相同.

Optional.orElseGet

>对orElseGet的调用返回对象T本身.
>如果没有值且提供函数为null,则抛出NullPointerException
>用例:根据提供的函数确定性地获取值.

Optional.or

> Optional.or返回描述值的Optional,否则返回由供应函数生成的Optional
>如果提供函数为null或者提供函数产生null结果,则抛出NullPointerException.
>使用案例:根据提供的函数的结果链接一系列Optionals.样品 –
How do I concisely write a || b where a and b are Optional values?

转载注明原文:java 9 OR和java 8 orElseGet之间的区别 - 代码日志