首页 > 解决方案 > 尝试创建新对象时出现未知类错误

问题描述

我有一个名为 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];

现在它立即在读取时用错误“未知类:'网格'”强调它。

这是两个类网格:

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;
    }

}

我在这里缺少什么提示?

标签: javaclassintellij-idea

解决方案


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

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

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

问题是:

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

显然,您想要大小 x 大小的 Tile 对象。这意味着new Tile()需要在您的代码中的某处调用,并且大小为 x 大小倍。回到你原来的样子,然后添加那个循环来制作瓷砖。


推荐阅读