一、简介
optional 类可以简化处置可能包含也可能不包含非空值的容器对象。避免空指针 (java.lang.NullPointerException)异常
二、创建方法
optional 是一个容器对象要先创建才能使用
1、静态方法empty(),会创建一个空的optional
2、静态方法of(传入对象),会可以创建一个指定的对象
3、静态方法ofNullable(传入对象),他会根据传入对象是否为null来调用上面2个方法。(对象为null调用empty()不为null调用of)
三、使用方法
1、调用get方法会获取到optional 容器中的对象,(如果获取对象为null会抛出异常)
2、调用isPresent()判断容器中的对象是否为null(为null的话返回false)
3、调用ifPresent()可以来对自身对象赋值
4、调用filter()可以检测数值是否满足特定条件(不满足会报错)
5、调用map()可以取出对象中的属性
6、调用orElse(传入对象),如果optional对象为null会返回传入对象,不为null返回自身。
7、调用orElseGet和orElse是一样的只是传入的类型不同
8、调用orElseThrow,为null可以抛出错误信息和map搭配,
Test test = new Test();
Optional<Test> optionalTest = Optional.of(test);
//2、输出为true
System.out.println(optionalTest.isPresent());
//3、aa自定义命名,赋值进入对象
optionalTest.ifPresent((aa)->aa.setId(3));
//1、输出为3
System.out.println(optionalTest.get().getId());
//4、aa自定义命名,吧id等于3的筛选出来如果没有就报错
Optional<Test> testFilter=optionalTest.filter(aa ->aa.getId()==3);
//5、调用map取出id
Optional<Integer> testMap =optionalTest.map(aa ->aa.getId());
//6、这里test中是有值的所以会返回自身对象,不会返回新建的test。
Test Test2=optionalTest.orElse(new Test());
//7、和orElse一样参数不同
Test Test3=optionalTest.orElseGet(()->new Test());
//8、这里如果不为null直接返回对象
Test Test4= optionalTest.
orElseThrow(() ->new RuntimeException("optionalTest对象为null"));
//这里为null就报错了
optionalTest.map(aa ->aa.getSouthCplogptCd()).
orElseThrow(()->new RuntimeException("SouthCplogptCd为null"));
参考地址:https://www.cnblogs.com/920913cheng/p/10268175.html