0

最近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

4 に答える 4

2

はい、すべて個別にクリアする必要があります。配列は、一度に 1 つずつアクセスする必要がある多くのオブジェクト参照の単なるコンテナーです。

うまくいけば、オブジェクト指向プログラミングによって、clear()それを実行できるメソッドを定義できるようになります。

Java 8 とラムダを待ちます ;)

于 2013-07-27T03:55:47.900 に答える
2

boardのオブジェクトではなく、配列として宣言されていますGameBoard

したがって、のオブジェクトが含まれていますGameBoard

これを行うboardと、配列になります。これを行うboard[0][0]と、 isGameBoardと入力されるため、配列のセルにアクセスすることによってのみ呼び出すことができます。

于 2013-07-27T03:57:00.493 に答える
1

GameBoard次の行で、合計 16個のインスタンスの 2 次元配列を初期化しています。

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)。

于 2013-07-27T04:01:03.290 に答える
0

board は Object gameBoard の配列です。最初に配列を修飾する必要があり、次に静的参照を使用できます

于 2013-07-27T03:58:31.420 に答える