【发布时间】:2012-10-14 14:17:56
【问题描述】:
众所周知,在 java 中创建单例的推荐方法是通过枚举(参见例如 here)
但是(例如在这个answer 中)它似乎被认为(@MikeAdler 在 cmets 中回复我)拥有枚举 是正确的strong> 单例类(参见例如here 的完整示例,或下面给出的代码)。我似乎并不真正理解这个的需要/用途 - 有人可以详细说明(最好给出这个成语的正确方言)吗?
public class Enclosing {
private Enclosing() {}
static enum Singleton {
INSTANCE;
private static final Enclosing singleton = new Enclosing();
public Enclosing getSingleton() {
return singleton;
}
}
}
编辑:可以通过Enclosing.Singleton.INSTANCE.getSingleton();获得单身人士
【问题讨论】:
-
如果你想要一个单例类,而不是单例枚举。
-
@DaveNewton:你能详细说明一下答案吗?我提醒你,枚举是特殊的类——无论如何,单例将是某个类的一个实例。 “单例类”是什么意思?
-
如果您需要或拥有一个特定的类,并且希望它是一个单例,这是实现它的最简单方法之一。我真的不需要提醒什么是枚举,但是谢谢。
-
@DaveNewton 哦,别误会我的意思 :) 说我是在提醒自己 :D - 我仍然没有真正理解差异 - 为什么不创建这样的类而不是作为顶级枚举?
-
我告诉过你——如果你已经有,或者出于某种原因特别需要一个给定的类,并且你不想要一个枚举。