所以这只是我的代码的一部分,整个程序编译和工作,但我不断得到"局部变量隐藏一个字段"第三行以&#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);
答案 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以获取示例。