foreach循环报NullPointerException空指针异常

一、问题

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

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

难怪一直报空指针。

二、说明

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

不会报NPE

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

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

四、启示

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

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

if(list != null && !list.isEmpty()){ }
发布了92 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41231928/article/details/102692658