JAVA用Optional工具类处理NEP(NullointerException)的总结

本文探讨如何使用Java的Optional工具类来处理NullPointerException(NPE)问题,分为三种情况:给空对象赋予默认值、遇到空对象时抛出异常以及只有对象非空时才执行的业务逻辑。通过Optional,可以更优雅地处理NPE,提高代码的健壮性和可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于如何对待NPE(NullPointerException)问题

关于如何处理NPE问题,我至今没有定论.仅说说自己浅薄的看法
JAVA的Optional工具类非常方便的处理NPE,但处理NPE不是代码的问题,是对业务设计规范的问题
如果不了解Optional可以去查询一下.Optional类的代码非常简洁,但它的设计逻辑非常棒

情况1:对象为空时,需要给它默认值

Integer a = null;
Optional.ofNullable(a).orElse(0)

上面代码意思就是当a为不为空时返回a,否则返回默认值0,这里提一下orElseorElseGet的异同,从效果上没区别,但是性能有区别,orElseGet的意思在需要返回默认值时才去获取它(优化了性能).

情况2:对象为空时,代码无法往下执行了

Optional.ofNullable(obj).orElseThrow(customException)
  • 这种情况非常常见,解决方法应该是抛出异常,我们可以使用orElseThrow将NPE转换为业务级异常,当然也可以使用断言的方式,
  • 或许读者可能会疑惑尽管不做任何处理NPE也会被抛出的,但是笔者认为这样的处理方式,是一种行为规范,即重视对象的NPE问题.以及需要考虑对象为什么会为空(什么条件下为空),
  • 作为业务级设计来讲,如果不去思考情况2,那么可能就得不出需要使用情况3的结论.
  • 当然作为情况2读者也可以不做任何处理,我这里将它定义为隐式的情况2处理方式

情况3:对象为不为空时,代码才执行

Optional.ofNullable(query).ifPresent(p->p.hashCode());

这种情况一般用于对对象以及对象相关的修饰处理,在业务上有就处理,没有就不处理的业务逻辑.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值