public class GameManager {
private static GameManager INSTANCE;
private final int INITIAL_SCORE = 0;
private int mCurrentScore;
GameManager(){
}
public static GameManager getInstance(){
if(INSTANCE == null){
INSTANCE = new GameManager();
}
return INSTANCE;
}
public int getCurrentScore(){
return mCurrentScore;
}
public void incrementScore(int pIncrementBy){
mCurrentScore += pIncrementBy;
}
public void resetGame(){
mCurrentScore = GameManager.INITIAL_SCORE;
}
}
我在eclipse中运行上面的代码。 我想知道为什么当将GameManager.INITIAL_SCORE的值分配给mCurrentScore时,eclipse告诉我“无法对非静态字段GameManager.INITIAL_SCORE进行静态引用”。 mCurrentScore不是静态的,是吗?如果mCurrentScore不是静态的,为什么我要将INITIAL_SCORE声明为静态?
答案 0 :(得分:0)
private final int INITIAL_SCORE = 0;
不是static
字段,它是实例字段(与mCurrentScore
相同)。你需要返回INITIAL_SCORE;
您无法使用班级名称访问它。
答案 1 :(得分:0)
当您使用类名称为变量添加前缀时,您告诉Java变量是静态的。由于变量不是静态的,因此会给出错误。代码应为:
public void resetGame(){
mCurrentScore = INITIAL_SCORE;
}