我无法理解Enum如何用于线程安全单例例程。 所以让我们说我有一个我想做单身的A类。我如何使用Enum做到这一点?我遇到了类似下面的代码的建议,但并不真正能够理解。在下面我应该用A singleObj = new A();
替换INSTANCE吗?使用枚举的线程安全单例程
此外,究竟应该A类看起来像在什么事情,我应该好好照顾有..例如:使构造私人等
public enum EasySingleton{
INSTANCE;
}
我无法理解Enum如何用于线程安全单例例程。 所以让我们说我有一个我想做单身的A类。我如何使用Enum做到这一点?我遇到了类似下面的代码的建议,但并不真正能够理解。在下面我应该用A singleObj = new A();
替换INSTANCE吗?使用枚举的线程安全单例程
此外,究竟应该A类看起来像在什么事情,我应该好好照顾有..例如:使构造私人等
public enum EasySingleton{
INSTANCE;
}
与下面将我替换INSTANCE
A singleObj = new A();
?
你不知道。您可以使用:
EasySingleton instance = EasySingleton.INSTANCE;
你写的单身就像一个普通的类,你要等什么方法 - 但没有公共的构造函数(这是不是在枚举有效反正)。
正如乔恩提到你会做到以下几点:
EasySingleton instance = EasySingleton.INSTANCE;
instance.doSomething();
如果你需要一些进一步的例子,以及优点/缺点很多的方法来创建辛格尔顿类,您可以访问:http://avaldes.com/creating-a-thread-safe-singleton-class-with-examples/。
谢谢@Jon。但我仍然没有得到它。那么这是否意味着enumn EasySingleton本身就是我的单身类? – Walt
@Walt:是的,确切的。这是一个单例,因为只有一个有效值('INSTANCE')。你仍然可以使它实现接口等。 –
谢谢乔恩。感谢您对我的耐心等待。不用说,我是编码世界的新手。 :) – Walt