我想了解爲什麼我在這個簡化的代碼中得到了一個空指針。有類似的問題,但其他用戶沒有初始化他們的ArrayList。在我的例子中,我正在初始化我的ArrayList,但是當我嘗試添加它時,仍然會得到一個空指針。這是爲什麼?Java - 初始化的ArrayList空指針
public class Grid {
private int x, y;
private List<Node>[][] grid = null;
public Grid(int x, int y) {
this.x = x;
this.y = y;
this.grid = new ArrayList[x][y];
}
public void addEle(Entity entity) {
for (int x = 0; x <= 3; x++) {
for (int y = 0; y <= 3; y++) {
this.grid[x][y].add(new Node(entity));
}
}
}
}
我得到就行了空指針, 「this.grid [X] [Y]。新增(新節點(實體));」,我不知道爲什麼,因爲我的網格對象ISN」 t null。
這是我的問題的一個例子降低所以這裏是我短暫的代碼的其餘部分:
Entity.java
public class Entity {
public Entity() { }
}
Node.java
public class Node {
Entity e;
public Node(Entity e) {
this.e = e;
}
}
最後一點,我的主類:
Driver.java
public class Driver {
public static void main(String[] args) {
Grid g = new Grid(4, 4);
Entity e = new Entity();
g.addEle(e);
}
}
'this.grid = new ArrayList [x] [y];'創建一個填充**'null' ** ArrayList'(s)的二維數組。 –
@Elliott Frisch,哦,哇,這是一個愚蠢的錯誤。不過,我會預料到從零開始的大小。有沒有解決這個問題的邏輯方法,還是我需要使用不同的數據結構?我正在計劃在該特定數組中添加很多元素,所以我覺得迭代它來處理空值將會是低效的。 – DontKnockNow
我實際上正在試圖製作類似列表 [] [] grid = new ArrayList [x] [y];但是,當我嘗試時,Java正在反擊。 –
DontKnockNow