由于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 获取到一个异常值,并抛出这个异常。