public class StateCacheManager {
public static StateCacheManager mInstance;
}
私の質問は変数mInstance
オブジェクトなしで呼び出すことができますか?上記の声明の意義は何ですか?オブジェクトなしでpublic static class name変数を呼び出すことができます
public class StateCacheManager {
public static StateCacheManager mInstance;
}
私の質問は変数mInstance
オブジェクトなしで呼び出すことができますか?上記の声明の意義は何ですか?オブジェクトなしでpublic static class name変数を呼び出すことができます
static
キーワードは、インスタンスを構築せずにアクセスできるクラスの要素を識別します。クラス名を修飾子として使用してアクセスできます。あなたはStateCacheManager.mInstance
mInstance
を書くことができます。この場合
は、クラスStateCacheManager
の目的です。このクラスのオブジェクトは1つだけです。
を初期化するgetInstance
の方法があります。
public class StateCacheManager {
public static StateCacheManager mInstance;
public StateCacheManager getInstance(){
if(mInstance == null){
mInstance = new StateCacheManager();
}
return mInstance;
}
}
これは、あなたがそれを使用する方法である、
StateCacheManager object = StateCacheManager.getInstance();
このクラスはSingleton Patternと呼ばれるパターンを使用しています。
何か(メソッド、フィールド、内部クラスなど)がstatic
で変更された場合は、接尾辞ClassName.
の名前を使用してアクセスできます。
だからあなたmInstance
変数は次のようにアクセスすることができます:あなたが見ることができるように
StateCacheManager.mInstance
、私はそれにアクセスするための任意のオブジェクトを作成していないので、あなたの最初の質問への答えは「はい」です。
しかし、あなたはおそらくprivate
mInstance
を変数にするとゲッターを追加する必要があります:
public static StateCacheManager mInstance = new StateCacheManager();
public StateCacheManager getInstance() { return mInstance; }
これは誤っているあなた、何か他のものにmInstance
を設定するから、他のあなたのコードのユーザー、または眠いにあなたのを防止するためでありますほしくない。
これはシングルトンパターンと呼ばれます。これは、クラスのインスタンスが1つだけ存在する場合に使用されます。