如果我像这样声明数组列表-
private ArrayList<Integer[]> nodeList;
然后,在添加数组时,得到NullPointerException
但是,如果我把它改成-
private ArrayList<Integer[]> nodeList= new ArrayList<Integer[]>();
-it works fine.
为什么第一个失败了!
第一个只声明了一个变量,但没有创建实际的对象。只有当您使用new
时,您才真正创建了对象。
在java中,与c++不同,声明一个变量并不分配它的局部变量。要实际创建对象,需要显式地创建它[在您的示例中:通过使用new
关键字]。
(*)请注意,这只适用于引用类型对象,java原语是通过声明创建的。