使用枚举的线程安全单例
thread safe singleton using enum
我无法理解枚举如何用于线程安全单例实例化。
因此,假设我有一个 class A,我想将其设为单例。我如何使用 Enum 做到这一点?我遇到了像下面的代码这样的建议,但并不能真正理解。在下面,我应该用 A singleObj = new A();
替换 INSTANCE 吗?
此外,class 究竟应该如何处理我应该在那里处理的事情......例如:将构造函数设为私有等。
public enum EasySingleton{
INSTANCE;
}
In the below shall I replace INSTANCE with A singleObj = new A();
?
你不知道。您使用:
EasySingleton instance = EasySingleton.INSTANCE;
您可以像普通 class 一样编写单例,使用您想要的任何方法等 - 但没有 public 构造函数(无论如何在枚举中都是无效的)。
正如乔恩提到的,您将执行以下操作:
EasySingleton instance = EasySingleton.INSTANCE;
instance.doSomething();
如果您需要更多示例,以及 pros/cons 创建 Singleton 类 的许多方法,您可以访问:http://avaldes.com/creating-a-thread-safe-singleton-class-with-examples/.
我无法理解枚举如何用于线程安全单例实例化。
因此,假设我有一个 class A,我想将其设为单例。我如何使用 Enum 做到这一点?我遇到了像下面的代码这样的建议,但并不能真正理解。在下面,我应该用 A singleObj = new A();
替换 INSTANCE 吗?
此外,class 究竟应该如何处理我应该在那里处理的事情......例如:将构造函数设为私有等。
public enum EasySingleton{
INSTANCE;
}
In the below shall I replace INSTANCE with
A singleObj = new A();
?
你不知道。您使用:
EasySingleton instance = EasySingleton.INSTANCE;
您可以像普通 class 一样编写单例,使用您想要的任何方法等 - 但没有 public 构造函数(无论如何在枚举中都是无效的)。
正如乔恩提到的,您将执行以下操作:
EasySingleton instance = EasySingleton.INSTANCE;
instance.doSomething();
如果您需要更多示例,以及 pros/cons 创建 Singleton 类 的许多方法,您可以访问:http://avaldes.com/creating-a-thread-safe-singleton-class-with-examples/.