一、介绍
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常。
二、常见用法
Optional.ofNullable() - 允许传递为 null 参数
Optional.of() - 如果传递的参数是 null,抛出异常 NullPointerException
Optional.isPresent() - 判断值是否存在
Optional.orElse() - 如果值存在,返回它,否则返回默认值
Optional.get() - 获取值,值需要存在
注:
1.of方法对null对象没有做任何处理,ofNullable方法才做了处理。所以当我们不知道传入的对象是否为null的时候,我们应该选择用 ofNullable来做处理。
例:String name = Optional.ofNullable(person).map(x -> x.getName()) .orElse("unKnown");
person对象不知道是否存在name的值,如果getName无值,则用unknown代替。
2.orElse(T other)不论容器是否为空,只要调用该方法, 则对象other一定存在orElseGet(Supplier<? extends T> supplier)只有当容器为空时,才调用supplier.get()方法产生对象
当Optonal为空时,无论orElse还是orElseGet都会执行;当Optional有值时,orElse会执行,而orElseGet不会执行。