Optional之应用场景

场景:NullPointerException 问题

在实际开发中经常会做类似如下一些判空操作:

                      
        User user = getUser();  //某些操作方法返回后的结果
        if(user.getUserName != null) {
            //doSomething
        }

ofNullable的用法

        
        String result = null;
        System.out.println(">>>>>>>>>"+Optional.ofNullable(result)); //打印为:>>>>>>>>>Optional.empty

of的用法


        String result = null;
        System.out.println(">>>>>>>>>"+Optional.of(result)); //会报空指针异常

总结:of(T value)函数内部调用了构造函数

  • 通过of(T value)函数所构造出的Optional对象,当Value值为空时,依然会报NullPointerException。
  • 通过of(T value)函数所构造出的Optional对象,当Value值不为空时,能正常构造Optional对象。

java8开始有了Optional类来优化这种写法
orElse的用法

Optional.ofNullable(result).orElse("") //result不为null时返回“ABC”、为null时返回自定义字符串“”(空)
  • 注意 这里orElse("")中的类型要和result类型保持一致

orElseGet的用法

 Optional.ofNullable(result).orElseGet(() -> {
            System.out.println("-------doSomething---------");
            return "";
        });
   Optional.ofNullable(user).orElse(getUser());
   Optional.ofNullable(user).orElseGet(() -> getUser());

这两个函数的区别:当result 值不为null时,orElse函数依然会执行getUser(),而orElseGet函数并不会执行getUser()方法。

filter用法

Optional.ofNullable(result).filter(f-> 过滤执行条件).orElse("")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值