1
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 声明为静态?

4

2 回答 2

0
private final int INITIAL_SCORE = 0;

不是static字段,它是实例字段(与 相同mCurrentScore)。你只需要返回 INITIAL_SCORE;

您无法使用类名访问它。

于 2013-02-03T04:35:39.273 回答
0

当您在变量前面加上类名时,您是在告诉 Java 该变量是静态的。由于变量不是静态的,它会给你一个错误。代码应为:

public void resetGame(){
    mCurrentScore = INITIAL_SCORE;
}
于 2013-02-03T04:38:53.590 回答