我无法理解Enum如何用于线程安全单例实例化。
所以,让我们说我有一个A类,我想制作单身。我如何使用Enum做到这一点?我遇到了类似下面代码的建议,但实际上并不能理解。在下面我应该用A singleObj = new A();
替换INSTANCE吗?
此外,A类究竟应该是什么样子,因为我应该在那里处理什么......例如:将构造函数设为私有等。
public enum EasySingleton{
INSTANCE;
}
答案 0 :(得分:2)
在下面我应该用
A singleObj = new A();
替换INSTANCE吗?
你不是。你使用:
EasySingleton instance = EasySingleton.INSTANCE;
您可以像普通类一样编写单例,使用您想要的任何方法等 - 但是没有公共构造函数(无论如何都不会在枚举中有效)。
答案 1 :(得分:0)
Jon提到你会做以下事情:
EasySingleton instance = EasySingleton.INSTANCE;
instance.doSomething();
如果您需要更多示例,以及创建Singleton类的许多方法的优点/缺点,您可以访问:http://avaldes.com/creating-a-thread-safe-singleton-class-with-examples/。