在SO问题上编写的内容基础上构建Java最佳单例实现 -即关于使用枚举创建单例-之间的区别/优点/缺点(省略构造函数)
public enum Elvis { INSTANCE; private int age; public int getAge() { return age; } }
and then calling Elvis.INSTANCE.getAge()
Elvis.INSTANCE.getAge()
和
public enum Elvis { INSTANCE; private int age; public static int getAge() { return INSTANCE.age; } }
and then calling Elvis.getAge()
Elvis.getAge()
假设您要绑定到将使用给定对象的属性的对象-您可以非常轻松地传递Elvis.INSTANCE,但是您不能传递Elvis.class并期望它找到该属性(除非经过故意编码才能找到类的静态属性)。
基本上,仅在需要实例时才使用单例模式。如果静态方法适合您,则只需使用这些方法,而不必理会枚举。