【发布时间】:2015-06-20 14:15:32
【问题描述】:
我创建了一个类 Obstacle,它带有一个 Obstacle 构造函数和一个函数。
package environment;
import static java.lang.System.out;
import environment.WorldEnvironment;
public class Obstacle {
private String obstacleType, setObstacleType;
private int obstacleSize, obstacleXCoord, obstacleYCoord, setObstacleSize, setObstacleXCoord, setObstacleYCoord;
public Obstacle(String getType, int getSize, int getXCoord, int getYCoord){
obstacleType = getType;
obstacleSize = getSize;
obstacleXCoord = getXCoord;
obstacleYCoord = getYCoord;
}
public void generateObstacle(int getPlayerCurrentXCoord, int getPlayerCurrentYCoord){//code in generateObstacle}
在我的 main 方法中,我从不同的类调用 generateObstacle()(请注意,这个类和 Obstacle 类都在同一个包中)。
import environment.Obstacle;
public void main(String[] args){
spawnPlayer();
while(runGame){
//one example of calling some Obstacle member variables and calling generateObstacle()
switch((playerInput.nextLine()).toUpperCase()){
case "W":
if(currentXCoord + 1 == Obstacle.obstacleXCoord && Obstacle.obstacleYCoord == currentYCoord){
out.println("There is a " + (Obstacle.obstacleType).toLowerCase() + " where you are trying to go.");
printPlayerCoords();
}
else{
movePlayerForward();
printPlayerCoords();
if(spawnObstacle.nextInt(8) == 3){
Obstacle.generateObstacle(currentXCoord, currentYCoord);
}
}
break;
全部
Obstacle.
变量引用抛出错误,说“不能对非静态字段进行静态引用。与
Obstacle.generateObstacle(currentXCoord, currentYCoord);
我不知道为什么会出现这个错误,因为 Obstacle 的成员变量都不是静态的,主方法也不是静态的。 generateObstacle() 方法本身也没有静态字段。这是 Obstacle 构造函数:
Obstacle newObstacle = new Obstacle(setObstacleType, setObstacleSize, setObstacleXCoord, setObstacleYCoord);
有人可以向我解释为什么我会收到此错误吗?是的,我环顾四周,但没有找到任何好的解释性解决方案。提前致谢。
【问题讨论】:
-
reference
Obstacle是静态的。它是一个类名。你需要一个实例。
标签: java oop object constructor static