gpt4 book ai didi

java - 对象为 null,尽管已初始化

转载 作者:行者123 更新时间:2023-12-01 06:55:02 26 4
gpt4 key购买 nike

我有以下代码:

public class GameCanvas extends JPanel {

private GridField[][] grid;
private int x, y;
private int fieldSize;

public GameCanvas(int rows, int cols, int fieldSize)
{
this.grid = new GridField[cols][rows];
this.x = cols;
this.y = rows;
this.fieldSize = fieldSize;
}

...
}

这是 GridField 类的定义:

public class GridField {

private FieldType fieldType;

public GridField() {
fieldType = FieldType.EMPTY;
}

public FieldType getFieldType() {
return fieldType;
}

public void setFieldType(FieldType fieldType) {
this.fieldType = fieldType;
}
}

问题是,当我尝试访问“网格”对象时,编译器说它是空的,尽管我已经在类的构造函数中初始化了它。

我做了一些检查:

if(grid[xSize][ySize] == null) {
System.out.println("Grid[x][y] is null");
}

它打印出的结果正是我所期望的 - null。

我是从 C# 背景转向 Java 的,所以我可能错过了一些东西。我相信,这是一个小错误,但我找不到它。

预先感谢您的任何提示。

最佳答案

this.grid = new GridField[cols][rows];

上面的代码只是初始化了数组。您还需要使用 GridFieldobjects 初始化每个数组元素。

大概是这样的:-

for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
grid[i][j] = new GridField();
}
}

I'm coming to Java from C# background so I might have missed something.

这种初始化方式在 C# 中没有什么不同。因此,如果您在 C# 中初始化了这样的数组,那么您可能也错过了一些东西。请注意@JonSkeet 的评论。

关于java - 对象为 null,尽管已初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084176/

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