forEach循环报NPE

首先,foreach循环内部是使用的迭代器来遍历,也就是说,这种遍历方式和使用迭代器来遍历是一样的。

场景一

如果一个集合赋值为null,那么对该集合进行foreach循环(也叫增强for循环)时,会报NPE(即空指针异常NullPointerException)。

代码如下:
List<String> list = null; // List<String> list = new ArrayList<>(); for (String i : list) { System.out.println(i); }

运行时报错如下:
Exception in thread "main" java.lang.NullPointerException

场景二

代码如下:
//List<String> list = null; List<String> list = new ArrayList<>(); for (String s : list) { System.out.println(s); }

运行后,没有报错。

结论

foreach循环会自动跳过遍历空的集合,如果对于null值的集合,会直接报NPE。

解决方法

可先判断集合是否为null再进行遍历,可使用工具类CollectionUtils。
注:是否要处理该npe视情况而定

posted on 2022-12-13 15:13  LuckyJane  阅读(142)  评论(0)    收藏  举报