如果我像这样宣布Arraylist -
private ArrayList<Integer[]> nodeList;
然后,在向其中添加数组时,获取NullPointerException
但是,如果我将其更改为 -
private ArrayList<Integer[]> nodeList= new ArrayList<Integer[]>();
- 工作正常。
为什么第一个失败!
答案 0 :(得分:3)
第一个只声明变量,但不创建实际对象。只有当您使用new
时,才能实际创建对象。
在Java中,与C ++不同,声明变量不会分配local variable。要实际创建对象,您需要显式创建它[在您的示例中:使用new
关键字]。
(*)请注意,这仅适用于reference类型对象,而java primitives是使用声明创建的。