代码示例
1 public static void main(String[] args) { 2 List<Integer> list = Lists.newArrayList(); 3 List<Integer> listA = Lists.newArrayList(); 4 listA.add(1); 5 List<Integer> listB = null; 6 list.addAll(listA); 7 list.addAll(listB); 8 System.out.println(JSON.toJSONString(list)); 9 }
现象
第7行代码出现空指针
原因
通过查询源码发现 addAll方法 第二行 会出现空指针
1 public boolean addAll(Collection<? extends E> c) { 2 Object[] a = c.toArray(); 3 int numNew = a.length; 4 ensureCapacityInternal(size + numNew); // Increments modCount 5 System.arraycopy(a, 0, elementData, size, numNew); 6 size += numNew; 7 return numNew != 0; 8 }
可见 c不能为空。