java1.8 optional的使用

一、简介

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值