java - (Java) 表达式的类型必须是数组类型,但它解析为对象错误

标签 java swing graphics awt

以下代码:

// Adds game button container
Object[][] gameButtons = new Object[3][3];

// Adds game buttons to game button container
Arrays.fill(gameButtons, new JButton[3][3]);
for (int i = 0; i < gameButtons.length; i++) {
    for (int j = 0; j < gameButtons[i].length; j++) {
        for (int k = 0; k < 3; k++) {
            for (int l = 0; l < 3; l++) {
                gameButtons[i][j][k][l] = new JButton();******
            }
        }
    }
}

向我抛出一个错误: 表达式的类型必须是数组类型,但它解析为对象。如何初始化 JButton?

编辑:我忘了澄清。错误发生在 ****** 行 请注意,******** 不在我的代码中。 编辑2:我尝试了洛根的修复,但它仍然不起作用:

for (Object[] row : gameButtons)
        Arrays.fill(row, new JButton[3][3]);
for (int i = 0; i < gameButtons.length; i++) {
    for (int j = 0; j < gameButtons[i].length; j++) {
        for (int k = 0; k < 3; k++) {
            for (int l = 0; l < 3; l++) {
                gameButtons[i][j][k][l] = new JButton();
            }
        }
    }
}

同样的错误,同样的地方。

最佳答案

gameButtons[i][j]Object 类型,无法作为数组进行索引。您必须首先将其转换为 JButton[][] 类型:

for (int i = 0; i < gameButtons.length; i++) {
    for (int j = 0; j < gameButtons[i].length; j++) {
        // cast it to an array type before accessing
        JButton[][] subArray = (JButton[][])(gameButtons[i][j]);

        for (int k = 0; k < 3; k++)
            for (int l = 0; l < 3; l++)
                subArray[k][l] = new JButton();
    }
}

关于java - (Java) 表达式的类型必须是数组类型,但它解析为对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49700843/

相关文章:

java - listView.setAdapter 不起作用

java - Spring REST 存储库继承空值

java - 使用 GitHub CI 时 Dockerfile COPY 失败 : stat no such file,

java - 重复更新jLabel

java - 找到字体真实边界的最佳方法

java - 合并位图?

c# - 从点画直线

java - 在编译时强制执行 java 注释

java - 如何正确输出java全屏

java - 在我的游戏中使用弧线来表示角色的视觉,但在将弧线环绕墙壁时遇到问题