List.addAll方法的入参不能为null

余生长醉 提交于 2020-08-04 15:13:22

缘由:

       某天,发现一段日志中出现了诡异的NPE。经过定位,认为是ArrayList不能加入null所致。

验证:

       new一个ArrayList,然后调用其addAll方法,并将入参设为null。

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.addAll(null);
        System.out.println("运行到此说明list.addAll的参数可以为null。");
    }
实验结果为:

 

Exception in thread "main" java.lang.NullPointerException
    at java.util.ArrayList.addAll(ArrayList.java:581)
    at Scratch.main(scratch_2.java:7)
 
Process finished with exit code 1
可以看到,addAll是不能加入null的。

具体原理就不在深究了,感兴趣的可以debug进去看一下。

那么,addAll既然不能加入null,add是否也不能加入null呢?一起来验证一下:

public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add(null);
        System.out.println("运行到此说明list.add的参数可以为null。");
    }
来看下实验结果:

运行到此说明list.add的参数可以为null。
 
Process finished with exit code 0
nice! No Problem,说明add方法完全是可以加入null的。

总结一下:

       日常编码中,如果ArrayList中要addAll,必须提前进行判null处理。而调用add则无须此操作
————————————————
版权声明:本文为CSDN博主「心潮逐浪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/poleanNa/article/details/90339628

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!