1.构造Optional类对象的三种方法:https://www.jianshu.com/p/82ed16613072
Optional.ofNullable(T value)
,该方法和 of
方法的区别在于,传入的参数可以为 null
—— 但是前面 javadoc 不是说 Optional
只能包含非 null
值吗?我们可以看看 ofNullable
方法的源码:
1、ifPresent
如果 Optional
中有值,则对该值调用 consumer.accept
,否则什么也不做。
所以对于上面的例子,我们可以修改为:
2、orElse
如果 Optional
中有值则将其返回,否则返回 orElse
方法传入的参数。
3、orElseGet
orElseGet
与 orElse
方法的区别在于,orElseGet
方法传入的参数为一个 Supplier
接口的实现 —— 当 Optional
中有值的时候,返回值;当 Optional
中没有值的时候,返回从该 Supplier
获得的值。
4、map
如果当前 Optional
为 Optional.empty
,则依旧返回 Optional.empty
;否则返回一个新的 Optional
,该 Optional
包含的是:函数 mapper 在以 value 作为输入时的输出值。
5、filter
filter
方法接受一个 Predicate
来对 Optional
中包含的值进行过滤,如果包含的值满足条件,那么还是返回这个 Optional
;否则返回 Optional.empty
。