local变量隐含字段的含义是什么?

时间:2015-04-23 19:18:42

标签: java

所以这只是我的代码的一部分,整个程序编译和工作,但我不断得到"局部变量隐藏一个字段"第三行以&#34开头的连续行; GameBoard myBoard = this.getGameBoard();.我只是好奇这实际意味着什么,以及从长远来看它是否对我的程序做了什么。

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 个答案:

答案 0 :(得分:22)

这意味着您有两个具有相同名称的不同变量 - myBoard。其中一个是你班上的一个领域。另一个是局部变量,即您在方法中声明的变量。

拥有两个具有相同名称的变量是一个坏主意。它可能会使您的代码非常混乱并且难以维护。

答案 1 :(得分:1)

方法中的局部变量始终是具有最高可见性的变量。这就是为什么在课程设置器中你总是这样做:

void setId(String id) {
    this.id = id;
}

this.id告诉Java将id(来自参数)分配给字段变量。这就是为什么这不起作用的原因:

void setId(String id) {
    id = id;
}

因为它会将id分配给自己。

您可以阅读有关范围的信息,请参阅:http://www.java-made-easy.com/variable-scope.html以获取示例。