Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 枚举还是类?_Java_Oop_Class_Enums_Singleton - Fatal编程技术网

Java 枚举还是类?

Java 枚举还是类?,java,oop,class,enums,singleton,Java,Oop,Class,Enums,Singleton,我使用枚举方法实现了一个单例: public enum Singleton { INSTANCE; public void doStuff(String stuff) { System.out.println("Doing " + stuff); } } 我如何正确地称呼它(我不是指执行,而是如何编写它)?它仍然是一个类还是现在是一个枚举?我只对理论部分感兴趣。 如果谈到面向对象和类,我可以说我创建了一个枚举类型的单例类吗?它是一个枚举,也是一个类。E

我使用枚举方法实现了一个单例:

public enum Singleton {
    INSTANCE;

    public void doStuff(String stuff) {
        System.out.println("Doing " + stuff);
    }
}
我如何正确地称呼它(我不是指执行,而是如何编写它)?它仍然是一个类还是现在是一个枚举?我只对理论部分感兴趣。

如果谈到面向对象和类,我可以说我创建了一个枚举类型的单例类吗?

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

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

这是一个枚举。java语言确保实例枚举值将实例化一次(每个类加载器,所以通常每个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或更高版本)

Java中的enum只是一个类(您似乎知道),所以您可以将其称为上述任何一种。这有点主观,但我认为这取决于你想强调的方面

  • 如果您想强调,正是这个东西可以用状态和方法实例化一个对象,请将其称为类
  • 如果要高亮显示对象本身,请将其称为singleton实例
  • 如果您想突出显示它正在使用enum实现单例模式,请将其称为enum
  • 如果您想强调它是一个单例的事实(而不提及该模式是如何实现的),请将其称为单例
  • 如果您想强调这是一个通过枚举实现的单例模式,请将其称为单例枚举

我会理解这些术语中的任何一个,我不会判断某人使用一个或另一个。

它是Enum,也是自Java5.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. 
您正在使用Enum创建单例

了解更多关于

的信息,至少如果你逐字引用它。。。