1、问题
在Java中遍历集合时,为了避免出现java.lang.NullPointerException问题,经常需要实现判断集合对象是否为null:
if (someList != null) {
for (Object temp : someList) {
// do whatever
}
}
或者
if (someList == null) {
return; // Or throw exception
}
for (Object object : someList) {
// do whatever
}
代码看上去有些臃肿,有没有更好的方式实现相同的效果呢?
2、解决办法
其实Apache Commons Collections4(该jar包资源在文章开头提供的资源中)已经在JDK相关集合类的基础上提供了一些新功能,我们可以使用其中的emptyIfNull()方法来优雅地判断null问题,当传入的参数为null时该方法会返回一个empty集合对象(牢记,null和empty可不是同一个概念哦),从而避免了NPE问题的出现。下面的代码说明了这个问题:
import org.apache.commons.collections4.ListUtils;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> list = null;
//下面的循环可以正常执行
for (String temp : ListUtils.emptyIfNull(list)) {
System.out.println("");
}
//下面的循环会出现NPE问题
for (String temp : list) {
System.out.println(temp);
}
}
}
3、总结
开发中遇到问题时要多搜索,说不定就能找到别人已经开发好的解决所遇问题的工具。