diff --git a/singleton/src/main/java/com/iluwatar/App.java b/singleton/src/main/java/com/iluwatar/App.java index 4a3fcf361..bf428b36c 100644 --- a/singleton/src/main/java/com/iluwatar/App.java +++ b/singleton/src/main/java/com/iluwatar/App.java @@ -5,6 +5,8 @@ package com.iluwatar; * Singleton pattern ensures that the class (IvoryTower) can have only one * existing instance and provides global access to that instance. * + * http://stackoverflow.com/questions/70689/what-is-an-efficient-way-to-implement-a-singleton-pattern-in-java + * */ public class App { @@ -22,5 +24,9 @@ public class App { System.out.println("threadSafeIvoryTower1=" + threadSafeIvoryTower1); System.out.println("threadSafeIvoryTower2=" + threadSafeIvoryTower2); + EnumIvoryTower enumIvoryTower1 = EnumIvoryTower.INSTANCE; + EnumIvoryTower enumIvoryTower2 = EnumIvoryTower.INSTANCE; + System.out.println("enumIvoryTower1=" + enumIvoryTower1); + System.out.println("enumIvoryTower2=" + enumIvoryTower2); } } diff --git a/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java new file mode 100644 index 000000000..e9c3dc4dc --- /dev/null +++ b/singleton/src/main/java/com/iluwatar/EnumIvoryTower.java @@ -0,0 +1,15 @@ +package com.iluwatar; + +/** + * + * Enum Singleton class. + * + */ +public enum EnumIvoryTower { + INSTANCE; + + @Override + public String toString() { + return getDeclaringClass().getCanonicalName() + "@" + hashCode(); + } +}