Java 8 Optional 类

作为一个程序员,经常遇到的问题就是空指针异常,为了避免这个异常,代码中会出现非常多的空值判断,也因此引入了大量的if else进行控制判断,java 8 中提供了Optional类来解决空指针的问题。那么Optional类有什么用呢?

Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类的引入很好的解决空指针异常。

如果有2个参数,进行相加求和,我们之前的做法:
Integer a = null;
Integer b = 10;
System.out.println(a+b);

结果:
Exception in thread "main" java.lang.NullPointerException
	at Main.main(Main.java:10)
从结果可以看出,如果有一个参数为null,求a+b的和就会报空指针,我们就需要判断a和b的值不为空。
if(null != a && null != b) System.out.println(a+b);
这样的话代码中可能会出现非常多的if else ,代码看起来非常的乱。

现在有了Optional类,那我们怎么做呢?
现在做法:
Integer a = null;
Integer b = 10;
Optional<Integer> c = Optional.ofNullable(a);
Optional<Integer> d = Optional.of(b);
System.out.println(c.orElse(new Integer(0))+d.get());
结果:
10

大家看结果是10,并没有出现空指针的异常被抛出来, Optional.ofNullable(a),ofNullable这个方法就是
允许a为null, Optional.of(b),这句的是如果b为null,就会抛出空指针异常,c.orElse(new Integer(0))这句
的意思就是c的值如果为null,就会使用默认值new Integer(0),这样的话,a+b的值就是new Integer(0)+10.

因此如果我们使用Optional类就可以解决很多的空指针问题了。

Optional类还有很多方法,比如isPresent()方法:
 Integer a = null;
 Integer b = 10;
 Optional<Integer> c = Optional.ofNullable(a);
 Optional<Integer> d = Optional.of(b);
 System.out.println("c的值是不是null:"+c.isPresent());
 System.out.println("d的值是不是null:"+d.isPresent());
结果:
c的值是不是null:false
d的值是不是null:true
从结果可以看出如果值不是null,就会返回true,否则就会返回false,
这是 isPresent()方法的源码:
 public boolean isPresent() {
        return value != null;
    }
正好验证了我们的猜测。

当然了Optional还有其它的方法,就不一一举例了,这个小技巧大家学到了吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值