JDK8之Optional-拒绝空指针异常

Optional是JDK8的新特性,虽然出现很久了,但是一直没有很好的运用它,今天特意研究了一下,把一些常用的用法记下来,防止忘记了

1 构建空Optional的三种方法

第一种构建空Optional对象
在这里插入图片描述
在get的时候就会报错
在这里插入图片描述
第二种构建空Optional对象
在这里插入图片描述
在get的时候也会报错
在这里插入图片描述第三种构建空Optional对象
在这里插入图片描述
在get的时候依然报错
在这里插入图片描述
可见三种构建空Optional的方法直接get的时候就会报错,这样在get拿数据的时候就报错避免了空值传递导致其他引用的地方也会出现空指针的风险

2 Optioanal的使用场景

@Test
    public void testOptional4(){
        Optional<Object> t3 = Optional.ofNullable(null);
        boolean present = t3.isPresent();
    }

isPresent方法在Optional中有值返回true,没有值返回false

@Test
    public void testOptional5(){
        Optional<String> t3 = Optional.ofNullable("aaa");
        t3.ifPresent(t-> System.out.println("bbbbb"));
    }

ifPresent方法在t3有值的时候就会执行后面的表达式,所以此方法会输出bbbb

@Test
    public void testOptional6(){
        Optional<String> t3 = Optional.ofNullable(null);
        String orElse = t3.orElse("默认值");
        System.out.println(orElse);
    }

orElse方法当t3中是空的时候就会输出传入的值:“默认值”,所以此方法输出"默认值"

@Test
    public void testOptional7(){
        Optional<String> t3 = Optional.ofNullable(null);
        t3.orElseThrow(() ->new RuntimeException("222"));
    }

orElseThrow方法在t3中是空的时候回直接一个异常,所以此方法会出现异常:java.lang.RuntimeException: 222

@Test
    public void testOptional8(){
        Optional<String> t3 = Optional.ofNullable("a");
        String c = t3.map(t -> t + "b").orElse("c");
        System.out.println(c);
    }

map方法可以对参数进行操作后再返回一个Optional对象,所以后面要再加一个orElse,所以此方法输出:ab
以上为JDK8中的方法
JDK9中还填加了ifPresentOrElse、or、stream方法

3 下面对lambda表达式分类记一下

consumer : 消费者 没有返回值
supplier : 提供者 需要返回值
runnable :既无输入又无输出
function :可以有输入也有输出
predicate :返回的是boolean值

https://www.jb51.net/article/186426.htm
https://mp.weixin.qq.com/s/NlM233GA4JYzFzfsxDfZcg

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值