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?

相关文章

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠...
今天犯了个错:“接口变动,伤筋动骨,除非你确定只有你一个...
Writer :BYSocket(泥沙砖瓦浆木匠)微 博:BYSocket豆 瓣:...
本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程...