Java9 给 Optional 添加了 .or
方法。现有的 .orElseGet
有何不同?
checkUserInMemory(userId).or(() -> checkUserInDB(userId));
最佳答案
主要是两者的返回类型不同。
Optional.orElseGet
调用
orElseGet
返回对象T
本身。抛出
NullPointerException
如果没有值存在并且提供函数是null
用例:根据提供的函数确定性地获取值。
Optional.or
Optional.or
返回Optional
描述值,否则返回Optional
由供给函数产生抛出
NullPointerException
如果供应函数是null
或者如果 供应函数产生null
结果。用例:链接一系列
Optional
s 基于所提供函数的结果。样本 - How do I concisely write a || b where a and b are Optional values?
关于java - java 9 OR 和 java 8 orElseGet 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48017995/