gpt4 book ai didi

java - 无法引用已声明的对象字段

转载 作者:行者123 更新时间:2023-12-01 22:21:01 24 4
gpt4 key购买 nike

我有一个 Obstacle 类,其中包含 Obstacle 对象的构造函数:

public class Obstacle {

public String obstacleType;
public int obstacleSize, obstacleXCoord, obstacleYCoord;

public Obstacle(String getType, int getSize, int getXCoord, int getYCoord){

obstacleType = getType;
obstacleSize = getSize;
obstacleXCoord = getXCoord;
obstacleYCoord = getYCoord;

}

}

在另一个类中,我导入 Obstacle 类并定义一个方法,generateObstacle,创建一个名为 newObstacle 的新 Obstacle。我还在此处对 newObstacle 的字段进行了多次引用,这些字段不会引发任何错误:

public static void generateObstacle(){

Obstacle newObstacle = new Obstacle(null, 0, 0, 0);

//randomly generates a 1 or 0
switch(spawnObstacle.nextInt(2)){

//if 0
case 0:
//newObstacle type is tree
newObstacle.obstacleType = "TREE";
break;

//if 1
case 1:
//newObstacle type is rock
newObstacle.obstacleType = "ROCK";
break;

}

//randomly generates 0, 1, or 2
switch(spawnObstacle.nextInt(3)){

//if 0
case 0:
//newObstacle size is 1
newObstacle.obstacleSize = 1;
break;

//if 1
case 1:
//newObstacleSize is 2
newObstacle.obstacleSize = 2;
break;

//if 2
case 2:
//newObstacle size is 3
newObstacle.obstacleSize = 3;
break;

}

}

等等。但是,在我的 main() 方法中,我无法引用 newObstaclenewObstacle 本身的任何字段:

public static void main(String[] args){

spawnPlayer();

while(runGame){

switch((playerInput.nextLine()).toUpperCase()){

case "W":
for(int x = 0; x < allExistingObstacles.size(); x++){

if(newObstacle.obstacleXCoord == currentXCoord){

}
}

引用

newObstacle.obstacleXCoord

抛出一个错误并说

newObstacle cannot be resolved to a variable

为什么我可以在代码中的其他地方引用 Obstacle 字段,但不能在此处引用?

最佳答案

newObstacle 的范围仅限于函数generateObstacle(),因此需要定义

 static Obstacle newObstacle = new Obstacle(null, 0, 0, 0);

在函数之外,以便引用(newObstacle)可以在全局范围内,并且可以在该类的任何函数中访问。

此外,newObstacle 应该是static,以便在静态方法中可访问,感谢 @chrylis 指出了这一点。

关于java - 无法引用已声明的对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com