常用的 list.isEmpty() 为何突然报null?

简介: 常用的 list.isEmpty() 为何突然报null?

以前判断list集合是否为空,会用list.isEmpty()判断是否为true,为true则业务继续进行下去,但以下这个方法报了null,为什么呢?


业务场景模拟:


创建一个父类,在父类里定义一个子类的list,main方法里存储父类id,但定义的list不给他赋值,之后再用father.getSonList()会报空异常。但用CollectionUtils的判断则不会报错。


代码如下:

image.png


原因:


从源码可以知道,ColletionsUtils里面也判断了isEmpty,但为什么他没报错呢?


我们都知道&&和||都是短路模式,&&必须两个都为正确(true),才会返回正确,只要第一个为false,则下面的不执行,直接返回错误。而||则是只要第一个返回true,则后面的就不再执行。


所以原因找到了:他是在先判断isEmpty之前判断的是否为null,并且用的短路模式,||当前面的为正确(true),则后面的isEmpty则不会运行,直接返回正确,从而业务能正常运行下去,不会报空异常。

image.png

相关文章
|
SQL Java 数据库连接
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
mybatis 使用foreach时出现“The expression ‘list‘ evaluated to a null value“问题
1657 3
|
7月前
|
Java
JAVA——List中剔除空元素(null)的三种方法汇总
JAVA——List中剔除空元素(null)的三种方法汇总
对List进行排序,值为null的排到最后
对List进行排序,值为null的排到最后
|
7月前
|
SQL JSON Java
Java【问题记录 02】对象封装+固定排序+list All elements are null引起的异常处理+Missing artifact com.sun:tools:jar:1.8.0
Java【问题记录 02】对象封装+固定排序+list All elements are null引起的异常处理+Missing artifact com.sun:tools:jar:1.8.0
86 0
|
SQL Java 数据库连接
Mybatis 查询出来的List 集合数量正确,但是具体数据为null
Mybatis 查询出来的List 集合数量正确,但是具体数据为null
445 0
Mybatis 查询出来的List 集合数量正确,但是具体数据为null
|
安全 Java
parallelStream() 踩坑指南,出现null元素,输出list的size不符合预期
parallelStream() 踩坑指南,出现null元素,输出list的size不符合预期
340 0
|
XML Java 数据库连接
Mybatis查询结果List集合数量正确,但全为null
Mybatis查询结果List集合数量正确,但全为null
330 0
Mybatis查询结果List集合数量正确,但全为null
|
Android开发
【安卓开发】‘boolean java.util.List.add(java.lang.Object)‘ on a null object
【安卓开发】‘boolean java.util.List.add(java.lang.Object)‘ on a null object
104 0
【安卓开发】‘boolean java.util.List.add(java.lang.Object)‘ on a null object
|
Java API
List 集合去除 null 元素
List 集合去除 null 元素
742 0