optional应用介绍

Optional 出现的意义
Optional 是从 JDK1.8 开始提供的一个容器类, 主要用于避免空指针异常(NPE), 其提供的一系列方法配合 Lambda 表达式可以让代码更加清晰, 语义化, 以及避免了空指针异常的问题这里要注意是避免空指针异常, 而不是避免返回null.

使用Optional,注意规则
Optional的包装和访问都有成本,因此不适用于一些特别注重性能和内存的场景。

不要将null赋给Optional,应赋以Optional.empty()。

避免调用isPresent()和get()方法,而应使用ifPresent()、orElse()、 orElseGet()和orElseThrow()。

Optional应该只用处理返回值,而不应作为类的字段(Optional类型不可被序列化)或方法(包括constructor)的参数。

不要为了链式方法而使用Optional,尤其是在仅仅获取一个值时。例如:

// good
return variable == null ? “blablabla” : variable;
// bad
return Optional.ofNullable(variable).orElse(“blablabla”);
// bad
Optional.ofNullable(someVariable).ifPresent(this::blablabla)
滥用Optional不仅影响性能,可读性也不高。应尽可能避免使用null引用。

避免使用Optional返回空的集合或数组,而应返回Collections.emptyList()、emptyMap()、emptySet()或new Type[0]。注意不要返回null,以便调用者可以省去繁琐的null检查。

避免在集合中使用Optional,应使用getOrDefault()或computeIfAbsent()等集合方法。

针对基本类型,使用对应的OptionalInt、OptionalLong和OptionalDouble类。

切忌过度使用Optional,否则可能使代码难以阅读和维护。

Lambda表达式不应过长
参考地址:
https://www.itdaan.com/blog/2019/05/22/5ab2af2a34573798f5c773ab58dec0bd.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值