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 に答える