java优雅实现判空逻辑-工具类使用

365 阅读1分钟

在写代码过程中,最常见的就是对对象的判空,一不小心就会抛出 NullPointerException 空指针异常,被大佬训斥一番,提醒下次要注意代码的健壮性。

代码判空常见并且写法不一,java常用的jar包对常见的判空逻辑提供了工具类,提高代码的健壮性和统一性。

新手常见的写法举例

创建一个list集合,List list = new ArrayList<>(),进过业务逻辑处理,最终将对象放到list中。

然后想从集合中取第一条数据list.get(0),list为null不就报空指针异常了嘛,机智如我,赶紧加上非空判断。

if(list != null){
    object = list.get(0);
}

大功告成,提交测试,正常业务都会有数据放到list中,由于测试场景和案例不全,上线后生产出现java.lang.IndexOutOfBoundsException,小黑屋里面见。

问题很简单,需要对list的size加大小限制。

if(list != null && list.size() > 0){
    object = list.get(0);
}

这样写逻辑上没有问题,但是common-collections.jar有对集合相关操作的工具类,逼格不就上去了。

if (CollectionUtils.isNotEmpty(list)) {
    object = list.get(0);
}

常见工具类判空写法

上面的小插曲主要为了引出使用工具类来对对象进行判空,提高代码的健壮性和优雅性。

工具类的功能很多,下面主要介绍一下判空写法。

字符串

StringUtils.isNotEmpty(String)

数组

ArrayUtils.isNotEmpty(Array)

集合

CollectionUtils.isNotEmpty(List)

Map

MapUtils.isNotEmpty(Map)

java8新特性

Optional 是 Java 8 引进的一个新特性,我们通常认为Optional是用于缓解Java臭名昭著的空指针异常问题。

Optional用法篇幅较长不在此具体描述,项目中没有提倡使用的话,对其他同事来讲降低了代码可读性,Optional设计是个好设计,感兴趣的同学可以自行研究。

\