由于NullPointerException
是Java开发中发生次数最多的一个异常, 所以在Java 8中提供了一个Optional
类, 用来避免该异常的发生, 这个类类似于Scala中的Option
。
Optional
类的所有构造方法都是private
的,因此可以使用它的静态方法来初始化,如:
1 | // 用来生成一个空值的Optional |
可以使用isPresent
方法来判Optional内的值是否存在,如:
1 | // 返回 false |
使用get
方法获取Optional内的值,如果是empty
,则抛出NoSuchElementException
异常。
使用ifPresent
方法可以先判断这个值是否存在,如果存在,则 执行一个操作。
filter
, map
, flatMap
等方法与Stream
的操作类似, 这里不再说明。
orElse
方法接收一个与Optional类型一致的参数,表示如果这个Optional
是empty,则返回这个传入的值。
orElseGet
方法接受一个Supplier
接口,表示当Optional
内的值不存在时,通过Supplier
获取到这个值。
orElseThrow
方法接受一个 Supplier
接口,表示当Optional
内的值不存在时,通过Supplier
获取到一个异常值,并抛出这个异常。