存在的价值
Optional 类介绍
-
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
-
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
-
Optional 类的引入很好的解决空指针异常。
三种创建Optional对象方式
public class OptionalTest {
@Test
public void test() throws Throwable {
/**
* 三种创建Optional对象方式
*/
// 创建空的Optional对象
Optional.empty();
// 使用非null值创建Optional对象
Optional.of("zhangxiaoxi");
// 使用任意值创建Optional对象
Optional optional = Optional.ofNullable("zhangxiaoxi");
}
}
判断是否引用缺失的方法(建议不直接使用)
optional.isPresent();
当optional引用存在时执行(类似的方法:map filter flatMap)
optional.ifPresent(System.out::println);
当optional引用缺失时执行
optional.orElse("引用缺失");
optional.orElseGet(() -> {
// 自定义引用缺失时的返回值
return "自定义引用缺失";
});
optional.orElseThrow(() -> {
throw new RuntimeException("引用缺失异常");
});
案例:将一个null的list转为optional
public static void stream(List<String> list) {
// list.stream().forEach(System.out::println);
Optional.ofNullable(list)
.map(List::stream)
.orElseGet(Stream::empty)
.forEach(System.out::println);
}
public static void main(String[] args) {
stream(null);
}