1. ホーム
  2. java

[解決済み] ローカル変数のhides a fieldの意味を教えてください。

2022-02-06 09:11:28

質問

これは私のコードの一部で、プログラム全体はコンパイルして動作しますが、"GameBoard myBoard = this.getGameBoard(); で始まる3行連続の行の横に "ローカル変数 hides a field" がずっと表示されるのです。これは実際に何を意味するのか、また長い目で見て私のプログラムに何か影響を及ぼしているのか気になります。

public void initialze(){
    myBoard = getGameBoard();
    obstacleLocations = myBoard.getObstaclePositions();
    pastureLocations = myBoard.getPasturePositions();

GameBoard myBoard = this.getGameBoard();
    ArrayList<GameLocation> obstacleLocations = myBoard.getObstaclePositions();
    ArrayList<GameLocation> pastureLocations = myBoard.getPasturePositions();
    GameLocation closestPasture = pastureLocations.get(0);
    GameLocation closestObstacle = obstacleLocations.get(0);

解決方法は?

同じ名前の2つの異なる変数があるということです。 myBoard . そのうちの 1 つは、クラスのフィールドです。 もうひとつはローカル変数、つまりメソッドの内部で宣言した変数です。

同じ名前の変数を2つ持つのは良くないことです。 コードが非常にわかりにくくなり、メンテナンスも大変になります。