尝试创建新对象时出现未知类错误

时间:2021-03-02 21:09:30

标签: java class intellij-idea

我有一个名为 Tile 的类,我想在其中创建一个名为 grid 的双数组。奇怪的部分是当我这样做

private final int size = 5;
public Tile[][] grid = new Tile[size][size];

它没有显示任何错误,但是当我尝试访问网格时,它会引发空指针异常。 所以我尝试了这个

private final int size = 5;
public Tile[][] grid;
grid = new Tile[size][size];

现在它立即在 read 下划线并显示错误“Unknown class: 'grid'”。

这是两个类 网格:

public class Grid {

    public Grid(String[][] grid){
        initiateGrid(grid);
    }

    private final int size = 5;
    public Tile[][] grid ; grid = new Tile[size][size];

    public void initiateGrid(String[][] grid){
        for(int i=0; i<5; i++){
            for(int j=0; j<5; j++){
                this.grid[i][j].setContent(grid[i][j]);
            }
        }
    }
    public void crossTile(Tile tile){
        tile.valid = false;
    }
}

平铺:

public class Tile {
    public Tile(){
        this.content = "";
        this.active = false;
        this.valid = true;
    }

    public String content;
    public boolean active;
    public boolean valid;

    public void setContent(String content){
        this.content = content;
    }

}

有什么我在这里遗漏的提示吗?

1 个答案:

答案 0 :(得分:3)

grid = new Tile[size][size]; 是一个语句,而不是一个字段声明。

语句不能出现在类中;它们只能出现在构造函数、初始化块和方法中。

因此,您的替代尝试是直接无效的 java。

问题是:

new Tile[size][size] 创建一个新的 2Dish 数组,可以容纳 Tile 对象,但没有初始化任何“插槽”。您必须遍历 x 和 y 坐标并创建一个新的 Tile 对象。

显然,您需要大小 x 大小的 Tile 对象。这意味着 new Tile() 需要在代码中的某处调用,大小 x 大小倍。回到原来的状态,然后添加该循环以制作瓷砖。