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

Nir*_*ane 3 java optional java-8 java-9

Java9 .or为Optional 添加了方法.现有的不同之处是.orElseGet什么?

checkUserInMemory(userId).or(() -> checkUserInDB(userId));
Run Code Online (Sandbox Code Playgroud)

Nam*_*man 9

主要是两者的返回类型各不相同.

Optional.orElseGet

  • 调用orElseGet返回对象T本身.

  • NullPointerException如果没有值且供应功能是,则抛出null

  • 使用案例:根据提供的函数确定性地获取值.

Optional.or

  • Optional.or返回的Optional描述值,否则返回一个Optional通过供给函数产生

  • NullPointerException如果供应功能是null或者供应功能产生结果则抛出.null

  • 使用案例:Optional根据提供的函数的结果链接一系列s.示例 - 如何简洁地编写|| b其中a和b是可选值?


sha*_*zin 9

Optional.orElse将返回一个Object,而Optional.or将返回另一个Optional.