foreach循环报NullPointerException空指针异常

一、问题

最近写了个接口,一直报Exception in thread "main" java.lang.NullPointerException,定位到报错的语句,发现是一个foreach语句报错:

foreach循环报NullPointerException空指针异常_第1张图片

于是打个断点查看,发现 userInfoBaseBOList = null,

难怪一直报空指针。

 

二、说明

  • 对于空的集合,foreach循环会自动跳过对该空集合的遍历,但是不会报NPE;
  • 对于null值的集合,foreach循环则会直接报NPE。

foreach循环报NullPointerException空指针异常_第2张图片

foreach循环报NullPointerException空指针异常_第3张图片

不会报NPE

 

三、关于List集合为空和null的理解

  • list为空,实际上已经实例化对象开辟内存空间了,但是还没有保存数据;
  • list等于null,可理解为没有对list集合分配内存空间,实际上压根就不存在。

 

四、启示

用foreach遍历集合时,应该先使用Apache的工具类CollectionUtils判断集合是否为null,再进行遍历。

CollectionUtils的isEmpty()方法及isNotEmpty()方法源码如下:

if(list != null && !list.isEmpty()){ }

 

 

 

 

 

 

你可能感兴趣的:(错误解决)