gpt4 book ai didi

java - ArrayLists 空异常的二维数组

转载 作者:行者123 更新时间:2023-12-04 05:11:25 26 4
gpt4 key购买 nike

我有一个具有 ArrayList 属性的类,另一个具有该类的二维数组的类:

public class someThingsList {

private List<someThings> lst;

public someThingsList () {
this.lst = new ArrayList<someThings>();
}
public addThing(someThings) {
someThings s = someThings;
this.lst.add(s);
}
}


public class x implements y {

private static someThingsList[][] field;

public x(int h, int w) {
x.field = new someThingsList[h][w];
for (someThingsList[] lst1 : x.field)
for (someThingsList lst2 : lst1)
lst2 = new someThingsList();
}

例如,当我有一个新的 x 对象(2,2)作为 h 和 w 时,并尝试做
x.fields[0][0].addThing(thing);

我收到 NullPointerException 错误,知道为什么吗?

最佳答案

不幸的是,当你想改变数组时,你不能对数组使用增强的 for-each 循环。 lst2在您的示例中只是另一个引用(到 null ),修改它不会修改原始数组。试试这个:

for(int i = 0; i < field.length; ++i)
for(int j = 0; j < field[i].length; ++j)
field[i][j] = new someThingsList();

或者:
for(int i = 0; i < h; ++i)
for(int j = 0; j < w; ++j)
x.field[i][j] = new someThingsList();

事实上,这个问题并不是数组特有的。检查以下代码:
List<String> strings = //...

for(String s: strings) {
s += "Bar";
}

即使看起来好像您正在修改原始 strings列表,您几乎没有修改临时 s每次循环后重新创建并忽略的变量。

关于java - ArrayLists 空异常的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com