Optional最早出现在Guava工具包中,主要为了解决空指针问题,已存在Java8版本类库中
初始化
Optional.of()或者Optional.ofNullable():创建Optional对象,差别在于of不允许参数是null,而ofNullable则无限制
Optional.of()在对象为空时会抛出空指针异常
Optional.empty()
所有null包装成的Optional对象
isPresent()
判断值是否存在
ifPresent(Consumer consumer)
如果option对象保存的值不是null,则调用consumer对象,否则不调用
orElse(value)
如果optional对象保存的值不是null,则返回原来的值,否则返回value
orElseGet(Supplier supplier)
功能与orElse一样,只不过orElseGet参数是一个对象
orElseThrow()
值不存在则抛出异常,存在则什么不做,有点类似Guava的Precoditions
filter(Predicate)
判断Optional对象中保存的值是否满足Predicate,并返回新的Optional,类似于Stream中filter的作用
map(Function)
对Optional中保存的值进行函数运算,并返回新的Optional,类似于Stream中map的作用
flatMap()
功能与map()相似,flatMap方法与map方法类似,区别在于mapping函数的返回值不同。map方法的mapping函数返回值可以是任何类型T,而flatMap方法的mapping函数必须是Optional。