我正在查看这段在 Java 中执行单例的正确方法的代码:What is an efficient way to implement a singleton pattern in Java?
我有点疑惑,如何向枚举添加方法?
public enum Elvis {
INSTANCE;
private final String[] favoriteSongs =
{ "Hound Dog", "Heartbreak Hotel" };
public void printFavorites() {
System.out.println(Arrays.toString(favoriteSongs));
}
}
上面代码中的枚举对我来说甚至没有意义,你有符号:
INSTANCE;
那条线怎么是正确的?
我来自 C#,这种语法让我很好奇,我希望有人能解释或理解上面的内容。
我猜这意味着 java 对枚举有更纯粹的想法,因为它可以有行为?
最佳答案
Java 中的枚举实际上是一个类。一种隐式扩展 java.lang.Enum 的方法。您在 INSTANCE;
中看到的特殊语法是枚举常量的声明。这将用于创建可以在代码中引用的枚举类的实例。事实上,您甚至可以为您的枚举设置一个非默认构造函数,并在常量声明中使用它。示例:
public enum Test {
INSTANCE("testing");
private final String content;
public Test(final String content) {
super();
this.content = content;
}
}
将枚举视为真正的对象具有某些优势。将一些逻辑放入枚举中很方便,但也不应被滥用。不过,在我看来,通过枚举实现的单例模式是一个不错的解决方案。
关于c# - Java枚举支持方法?但不是在 C# 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7935117/