在什么条件下该Collections.addAll()
方法抛出NullPointerException
?官方文件提到:
NullPointerException - 如果指定的集合包含null元素,并且此集合不允许null元素,或者指定的集合为null
如何确保此"集合不允许null元素"
public class CollectionImpl { public void checkList(){ Listvar1 = new ArrayList (); var1.add("One"); var1.add("Two"); var1.add("Three"); System.out.println("var1 : " + var1); try{ if(Collections.addAll(var1,"Four" , "Five" , null , "1")){ System.out.println("True"); } } catch(NullPointerException e){ System.out.println("Caught Null Pointer Exception" + e); } catch(IllegalArgumentException e){ System.out.println("Caught IllegalArgument Exception" + e); } finally{ System.out.println("var1 : " + var1); } }
OUTPUT
var1 : [1, 2, null] True var1 : [1, 2, null, 4, 5, null, 6]
T.J. Crowder.. 7
Java Collections何时在使用Collections.addAll()时抛出NullPointerException
该Collections.addAll
文件告诉我们:
NullPointerException
-如果elements
包含一个或多个null
值,并且c
不允许null
元件,或者如果c
或者elements
是null
回答你的第二个问题:
如何确保此"集合不允许null元素"
通过参考您正在使用的课程的文档.在这种情况下(ArrayList
),这是第二句话:
实现所有可选列表操作,并允许所有元素,包括
null
.
(我的重点.)
如果你不知道你正在处理什么类(你只是List
从其他代码那里得到一个并且不知道/不知道它可能是什么类型的列表),你需要在接受它的方法中记录是否它需要支持null
(因为List
没有告诉你的东西;除了尝试添加一个并捕获异常,如果没有).
Java Collections何时在使用Collections.addAll()时抛出NullPointerException
该Collections.addAll
文件告诉我们:
NullPointerException
-如果elements
包含一个或多个null
值,并且c
不允许null
元件,或者如果c
或者elements
是null
回答你的第二个问题:
如何确保此"集合不允许null元素"
通过参考您正在使用的课程的文档.在这种情况下(ArrayList
),这是第二句话:
实现所有可选列表操作,并允许所有元素,包括
null
.
(我的重点.)
如果你不知道你正在处理什么类(你只是List
从其他代码那里得到一个并且不知道/不知道它可能是什么类型的列表),你需要在接受它的方法中记录是否它需要支持null
(因为List
没有告诉你的东西;除了尝试添加一个并捕获异常,如果没有).