Implement Singleton pattern with a single-element enum
suggest changeEnum constants are instantiated when an enum is referenced for the first time. Therefore, that allows to implement Singleton software design pattern with a single-element enum.
public enum Attendant { INSTANCE; private Attendant() { // perform some initialization routine } public void sayHello() { System.out.println("Hello!"); } }
public class Main { public static void main(String... args) { Attendant.INSTANCE.sayHello();// instantiated at this point } }
According to “Effective Java” book by Joshua Bloch, a single-element enum is the best way to implement a singleton. This approach has following advantages:
- thread safety
- guarantee of single instantiation
- out-of-the-box serialization
And as shown in the section implements interface this singleton might also implement one or more interfaces.
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents