我最近一直在学习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()方法中清除它们?
答案 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()
上致电board
,clear()
不是你可以在阵列上调用的东西。您需要拨打board[i][j].clear()
或在类似的循环中调用(但只有在您初始化它们之后,或者您将尝试在null
上调用某些内容,并获得NullPointerException
)
答案 3 :(得分:0)
board是Object gameBoard的数组。你需要首先限定数组,然后才能使用静态参考