public class StateCacheManager {
public static StateCacheManager mInstance;
}
我的問題是變量mInstance
可以被調用沒有對象嗎?如果沒有,那麼上面的陳述的意義是什麼?公共靜態類名稱變量可以被調用沒有對象
public class StateCacheManager {
public static StateCacheManager mInstance;
}
我的問題是變量mInstance
可以被調用沒有對象嗎?如果沒有,那麼上面的陳述的意義是什麼?公共靜態類名稱變量可以被調用沒有對象
static
關鍵字標識可以在不構建實例的情況下訪問的類的元素。您可以使用類名稱作爲限定符來訪問它們。
在這種情況下,你可以寫StateCacheManager.mInstance
mInstance
是類StateCacheManager
的對象。這個類只有一個對象。
應該有一個getInstance
方法初始化mInstance
。
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
正如你所看到的,我沒有創建任何對象來訪問它,所以回答你的第一個問題是「是」。
但是,你應該做的mInstance
變量private
,並添加一個getter:
public static StateCacheManager mInstance = new StateCacheManager();
public StateCacheManager getInstance() { return mInstance; }
這是爲了防止你的代碼的其他用戶,或昏昏欲睡你,不小心設置mInstance
到別的東西,你不想要。
這叫做單例模式。當你只想要一個類的一個實例存在時使用它。