在java中的类方法中访问对象数组

时间:2013-07-27 03:53:36

标签: java arrays

我最近一直在学习Java。我有一个疑问,我不确定这是否有可能实施。

假设我有一个GameBoard类,我创建了一个对象数组,

GameBoard[][] board = new GameBoard[4][4];

现在,如果我需要调用类GameBoard的非静态方法,是否可以将其称为,

board.clear(); //clear the squares on the game board

或者我是否需要单独调用这些元素?

board[1][1].clear();
board[2][2].clear();

如果可以调用board.clear(),是否有办法循环遍历数组元素以在clear()方法中清除它们?

4 个答案:

答案 0 :(得分:2)

是的,您必须单独清除所有这些内容。您的数组只是许多对象引用的容器,您必须一次访问它们。

希望面向对象编程允许您定义一个可以为您完成此任务的clear()方法。

等待Java 8和lambdas;)

答案 1 :(得分:2)

board被声明为数组,而不是GameBoard

的对象

所以它包含GameBoard

的对象

执行此操作board时,它是一个数组。 当你执行board[0][0]时,键入GameBoard,因此您只能通过访问数组的单元格进行调用。

答案 2 :(得分:1)

您正在使用以下行初始化GameBoard个实例的二维数组,共16个实例:

GameBoard[][] board = new GameBoard[4][4];

board数组数组将包含所有元素的null值,直到您初始化它们为止,例如:

board[0][0] = new GameBoard();

或者,循环:

for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
        board[i][j] = new GameBoard();
    }
}

你是对的,你不能直接在clear()上致电boardclear()不是你可以在阵列上调用的东西。您需要拨打board[i][j].clear()或在类似的循环中调用(但只有在您初始化它们之后,或者您将尝试在null上调用某些内容,并获得NullPointerException

答案 3 :(得分:0)

board是Object gameBoard的数组。你需要首先限定数组,然后才能使用静态参考