我無法理解Enum如何用於線程安全單例例程。 所以讓我們說我有一個我想做單身的A類。我如何使用Enum做到這一點?我遇到了類似下面的代碼的建議,但並不真正能夠理解。在下面我應該用A singleObj = new A();
替換INSTANCE嗎?使用枚舉的線程安全單例程
此外,究竟應該A類看起來像在什麼事情,我應該好好照顧有..例如:使構造私人等
public enum EasySingleton{
INSTANCE;
}
我無法理解Enum如何用於線程安全單例例程。 所以讓我們說我有一個我想做單身的A類。我如何使用Enum做到這一點?我遇到了類似下面的代碼的建議,但並不真正能夠理解。在下面我應該用A singleObj = new A();
替換INSTANCE嗎?使用枚舉的線程安全單例程
此外,究竟應該A類看起來像在什麼事情,我應該好好照顧有..例如:使構造私人等
public enum EasySingleton{
INSTANCE;
}
與下面將我替換INSTANCE
A singleObj = new A();
?
你不知道。您可以使用:
EasySingleton instance = EasySingleton.INSTANCE;
你寫的單身就像一個普通的類,你要等什麼方法 - 但沒有公共的構造函數(這是不是在枚舉有效反正)。
正如喬恩提到你會做到以下幾點:
EasySingleton instance = EasySingleton.INSTANCE;
instance.doSomething();
如果你需要一些進一步的例子,以及優點/缺點很多的方法來創建辛格爾頓類,您可以訪問:http://avaldes.com/creating-a-thread-safe-singleton-class-with-examples/。
謝謝@Jon。但我仍然沒有得到它。那麼這是否意味着enumn EasySingleton本身就是我的單身類? – Walt
@Walt:是的,確切的。這是一個單例,因爲只有一個有效值('INSTANCE')。你仍然可以使它實現接口等。 –
謝謝喬恩。感謝您對我的耐心等待。不用說,我是編碼世界的新手。 :) – Walt