[代码优化]null校验的优美处理

本文探讨了在Java编程中常见的null校验问题,指出过多的null检查影响代码的可读性和效率。Java 8引入的Optional类提供了一种改进的方式,通过封装对象来表达可能为null的语义,减少不必要的null检查。文章介绍了Optional的使用方法,如、和等,强调正确使用Optional能提升代码的简洁性和可读性。
摘要由CSDN通过智能技术生成

我们写java代码的时候,使用对象前,都会下意识先判断对象非null,这是防止NPE的无奈之举,毕竟入门写代码时都写过npe的代码。这么做真的好吗,每层方法中都有这null的判断,导致很多null的判断都是重复的,我们对每个方法的返回都持有一个怀疑不确定的态度,是导致代码各个地方都有非null校验的原因。

在严格的面向接口编程的语义中,通过接口方法我们就应该了解返回的是否会存在没有数据的情况,只有接口提示存在没有结果返回时,代码才会有非null的校验逻辑。在开发过程中大部分方法,是没有体现返回是否可能为null的语义的。

// 这种方法无法体现返回是否可能为null的语义
T get(Integer id);

在java8中,提供了Optional类来包装对象,用这个Optional包装对象,我们可以体现返回是否可能为null的语义,从而解决代码中无处不在的null检查。我们可以这样规定,如果方法返回的是对象,那么它的返回一定不为null;如果方法返回的是Optional对象,则表示方法返回结果可能存在null,需要做非null处理。

T get()返回不为null的实践一般是当接口为null时,抛出异常,这样就做到返回一定不为null了。

// 这种方法代表返回结果一定不为null,调用这个方法不用做null处理
T get(Integer id);

// 这种方法代表返回结果可能
Optional<T> get(Integer id);

对于返回可能存在null的方法,Optional对象也提供了一些优雅的处理方式。我之前使用Optional.isPresent来判断是否有值后再进行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值