Enum Singleton

Version >= Java SE 5

public enum Singleton {
    INSTANCE;

    public void execute (String arg) {
        // Perform operation here 
    }
}

列舉有私有建構函式,是最終的並提供適當的序列化機制。它們也非常簡潔,並以執行緒安全的方式初始化。

JVM 提供了一個保證,即列舉值不會多次例項化,這使得列舉單例模式能夠很好地防禦反射攻擊。

列舉模式無法防範的是其他開發人員在原始碼中物理新增更多元素。因此,如果你為單例選擇此實現樣式,則必須非常清楚地記錄不應將新值新增到這些列舉中。

這是實現單例模式的推薦方法,正如 Joshua Bloch 在 Effective Java 中所解釋的那樣