- 使用
Optional.ofNullable(obj).orElse
时,无论obj
是否为null
,都会执行orElse
的方法; - 使用
Optional.ofNullable(obj).orElseGet
时,只有obj
是否为null
,才会执行orElseGet
里的方法;
- 传入
Optonal值
为非空,orElse
或orElseGet
都会执行,返回传入值; - 传入
Optional值
为空,orElse
会执行,orElseGet
不会执行,返回执行方法体的结果. - 传入
Optonal值
非空,返回本身
; - 传入
Optional值
为空,返回other
; - 由于
orElseGet
入参使用的是Supplier(类似懒加载),所以在只有在传入Optional值
为空的时候,才会去执行; - 对于
orElseGet
:返回值(如果存在),否则调用{other}并返回该调用的结果。 - 对于
orElse
来说,无论传入Optional值
是否为空,都会执行; - 对于
orElse
:返回值(如果存在),否则返回{other} - 对于性能要求比较高的场景,建议使用orElseGet;