Java8新特性Optional工具类详解,不会用岂不是吃大亏?

Optional工具类详解


前言

Java8引入optional工具类的目的主要是为了解决日常开发过程中经常遇到的空指针异常,它具备一整套的空指针判断方法,包括变量、对象、集合、数组等,当然你也可以写工具类取判定,但为了代码的整洁美观更少的写if(null){}类似代码,并且现在流行的链式编程我们还是有必要学习下该工具类的使用。。。


一、Optional 方法有哪些?

所以方法如下:
在这里插入图片描述
如何构造?
Optional 的三种构造方式:Optional.of(T), Optional.ofNullable(T) 和Optional.empty()

  • Optional.of(T) 它要求传入的 T 不能是 null 值的, 否则直接报空指针异常。
  • Optional.ofNullable(obj):它是相对宽容的方式来构造一个 Optional 实例。,传 null 进到就得到 Optional.empty(),非 null 就调用Optional.of(obj)。
  • Optional.empty():返回一个空的 Optional 对象。

具体方法

🤣 of:为非null的值创建一个Optional。of方法通过工厂方法创建Optional类。需要注意的是,创建对象时传入的参数不能为null。如果传入参数为null,则抛出NullPointerException。因此不经常用。
😎 ofNullable:为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。
😂 isPresent:如果值存在返回true,否则返回false。
😊 ifPresent:如果Optional实例有值则为其调用consumer,否则不做处理
😎 get:如果Optional有值则将其返回,否则抛出NoSuchElementException。因此也不经常用。
😁 orElse:如果有值则将其返回,否则返回指定的其它值。
😊 orElseGet:orElseGet与orElse方法类似,区别在于得到的默认值。orElse方法将传入的字符串作为默认值,orElseGet方法可以接受Supplier接口的实现用来生成默认值
😘 orElseThrow:如果有值则将其返回,否则抛出supplier接口创建的异常。
😒 filter:如果有值并且满足断言条件返回包含该值的Optional,否则返回空Optional。
map:如果有值,则对其执行调用mapping函数得到返回值。如果返回值不为null,则创建包含mapping返回值的Optional作为map方法返回值,否则返回空Optional。
flatMap:如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional。

二、如何使用

一般不用Optional方法在判空时代码如下:

public String getUseAddress(User user){
	if(user == null){
		return "未获取到用户地址";
	}else return user.getAddress();
}

当我们使用Optional来进行判空时可以直接选择链式编程的方式:

  User user = null;
  String value = Optional.ofNullable(user).map(u -> u.getAddress()).orElse("未知");
  System.out.println(value);

总结

Optional 是我们在判空时候更加的优雅,而且也符合链式编程习惯,值得学习和使用。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值