Optional:关于java中处理null的官方推荐作法

java8特性:optional

optional最开始是出现在Guava的工具类中的,后来在JDK8中被正式加入进来,作为官方推荐的处理null的作法.

基本介绍

optional的构思,由于null存在很大的歧义,返回值为null的时候,你不能确定你的方法是执行成功了还是失败,比如map.get(“key”)返回null,你不能确定value是null,还是不在在这个键值对.在optional中,官方给optional提供泛型,null只表示存在或者缺失.

构造方法

三种构造方式

  1. 允许输入值为null 推荐
 //创建允许null值的Optional,5这个值也可以为null
 Optional<Integer> possible = Optional.fromNullable(5); 
  1. 不允许输入值为null,不然直接抛出空指针异常
//若引用为null则快速失败触发java.lang.NullPointerException
 Integer nubmerone=4;
 Optional<Integer> integerOptional = Optional.of(nubmerone);

  1. 只要值为null创建optional对象
//创建引用缺失的Optional实例,就是为NULL的
 Optional<Integer> nullOptional=Optional.empty();
小结

从这里面可以看出我们平时代码里面应该使用Optional.formNullable,因为大多数情况下
1:我们不能肯定获取的值一定不为null(只有特殊情况下值为null),所以使用这个方法 创建optional比较合适.
2:使用optional就是为了防止出现空指针异常导致程序出错停止,如果使用of(value)创建,虽然可以直接定位到出错位置,但是会造成程序无法运行下去.

常见方法
//如果Optional包含非null的引用(引用存在),返回true
isPresent();
//如果Optional为NULL将触发异常
get();
//包含的引用缺失(null),返回默认的other,否则返回本身
orElse(T other) ;
//重写的equals方法
equals(Object obj) ;
总结

可以去看看这篇文章,博主是使用guava的optional做的示例,可以看看博主对于optional的理解,使用是附加的,核心还是对null的态度和编程理解.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝多芬也爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值