cod*_*ing 5 c# java enumeration
我正在研究在java中执行单例的正确方法的代码:在Java中实现单例模式的有效方法是什么?
我有点困惑,你如何在枚举中添加一个方法?
public enum Elvis {
INSTANCE;
private final String[] favoriteSongs =
{ "Hound Dog", "Heartbreak Hotel" };
public void printFavorites() {
System.out.println(Arrays.toString(favoriteSongs));
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码中的枚举对我来说甚至没有意义,你有符号:
INSTANCE;
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
我来自c#,这种语法让我很好奇,我希望有人可以解释或理解上述内容.
我想这意味着java有一个更纯粹的枚举概念,因为它可以有行为?
G_H*_*G_H 13
Java中的枚举实际上是一个类.一个隐式扩展java.lang.Enum.您看到的特殊语法INSTANCE;是枚举常量的声明.这将用于创建一个可以在代码中引用的枚举类的实例.事实上,你甚至可以为你的枚举设置一个非默认的构造函数,并在常量声明中使用它.例:
public enum Test {
INSTANCE("testing");
private final String content;
public Test(final String content) {
super();
this.content = content;
}
}
Run Code Online (Sandbox Code Playgroud)
将枚举作为真实对象处理具有一定的优势.将一些逻辑放入枚举很方便,但也不应该被滥用.不过,在我看来,通过枚举的单例模式是一个很好的解决方案.
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |