站长素材免费下载,远程服务器怎么建设自己的网站,东莞建设监督网,丽水市莲都区建设分局网站缘由#xff1a;
某天#xff0c;发现一段日志中出现了诡异的NPE。经过定位#xff0c;认为是ArrayList不能加入null所致。
验证#xff1a;
new一个ArrayList#xff0c;然后调用其addAll方法#xff0c;并将入参设为null。 public static void main(String[] …缘由
某天发现一段日志中出现了诡异的NPE。经过定位认为是ArrayList不能加入null所致。
验证
new一个ArrayList然后调用其addAll方法并将入参设为null。 public static void main(String[] args) {ListString list new ArrayList();list.addAll(null);System.out.println(运行到此说明list.addAll的参数可以为null。);}实验结果为
Exception in thread main java.lang.NullPointerExceptionat java.util.ArrayList.addAll(ArrayList.java:581)at Scratch.main(scratch_2.java:7)Process finished with exit code 1可以看到addAll是不能加入null的。
具体原理就不在深究了感兴趣的可以debug进去看一下。
那么addAll既然不能加入nulladd是否也不能加入null呢一起来验证一下 public static void main(String[] args) {ListString list new ArrayList();list.add(null);System.out.println(运行到此说明list.add的参数可以为null。);}来看下实验结果
运行到此说明list.add的参数可以为null。Process finished with exit code 0nice! No Problem说明add方法完全是可以加入null的。
总结一下
日常编码中如果ArrayList中要addAll必须提前进行判null处理。而调用add则无须此操作。