gpt4 book ai didi

java - 单例模式中枚举相对于类的优势

转载 作者:太空宇宙 更新时间:2023-11-04 06:33:26 25 4
gpt4 key购买 nike

我最近才知道enum是一种更有效的实现单例的方法。

带有枚举的单例:

public enum Singleton{
INSTANCE;
public void doStuff(){
//......
}
public void doMoreStuff(){
//......
}
}

带有的单例:

public class Singleton{
private static final INSTANCE = new Singleton();

private Singleton(){}

public static Singleton getInstance(){
return INSTANCE;
}

public void doStuff(){
//......
}
public void doMoreStuff(){
//......
}
}

问题:使用枚举相对于类来实现单例可能有哪些优点或缺点?

最佳答案

explained by Joshua Bloch ,如果您的单例不可序列化,则这两种方法在功能上是相同的。尽管您可能希望将代码添加到私有(private) Singleton 构造函数中,以防止使用反射来创建第二个实例。

如果您的单例是可序列化的,那么枚举方法将免费提供所有必要的管道,而使用静态字段方法,您必须自己添加。

在我看来,采用枚举方法没有任何缺点。

关于java - 单例模式中枚举相对于类的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25780764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com