枚举或类?

时间:2012-05-10 05:07:25

标签: java oop class enums singleton

我使用枚举方法实现Singleton:

public enum Singleton {
    INSTANCE;

    public void doStuff(String stuff) {
        System.out.println("Doing " + stuff);
    }
}

我如何正确地调用它(我不是指执行,只是如何它)?它仍然是一个类或现在是一个枚举?我只对理论部分感兴趣。
如果谈论面向对象和类,我可以说我创建了一个类型为枚举的Singleton类吗?

6 个答案:

答案 0 :(得分:3)

Java中的枚举只是一个类(你似乎知道),所以你应该好好调用上面的任何一个。这有点主观,但我认为这取决于你想要强调哪些方面。

  • 如果你想强调一下这个可以用状态和方法实例化一个对象,可以把它叫做一个类
  • 如果要突出显示对象本身,请将其称为单例实例
  • 如果你想突出显示它正在使用枚举实现单例模式,请将其称为枚举
  • 如果你想突出它是一个单身的事实(没有提到该模式是如何实现的),称之为单身人士
  • 如果你想强调它是通过枚举实现的单例模式这一事实,请将其称为单例枚举

我会理解这些条款中的任何一个,而且我不会因为使用其中一个而判断某人。

答案 1 :(得分:2)

这是一个枚举,它也是一个类。 Enum是一种类。

答案 2 :(得分:0)

在这种情况下,您创建了一个单例对象INSTANCE,它是一个枚举(在本例中为INSTANCE)。 jvm确保只存在一个枚举实例;因此默认情况下它们可以被视为单身。您可以找到更多详细信息here

答案 3 :(得分:0)

这是一个枚举。 java语言确保INSTANCE枚举值将被实例化一次(每个类加载器,通常每个JVM一次),Singleton.INSTANCE字段将允许您访问单个实例。

您也可以这样做:

public class Singleton {
    public static Singleton instance INSTANCE = new Singleton();

    private Singleton() { /* private ctor so people can't instantiate their own */ }
}

但是enum方法使它更清晰(如果你有JDK5或更高版本)

答案 4 :(得分:0)

Java programming language enum types are much more powerful than their
counterparts in other languages. The enum declaration defines a class 
(called an enum type).
The enum class body can include methods and other fields. The compiler 
automatically adds some special methods when it creates an enum. 

答案 5 :(得分:0)

它是Enum,它也是Java5.0以来的一种类。

您正在使用Enum创建Singleton。

详细了解Enum