Java 枚举变量是什么样的数据结构?

Java 枚举变量是什么样的数据结构?,java,ruby,data-structures,token,symbols,Java,Ruby,Data Structures,Token,Symbols,例如来自Java文档: public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 在Ruby中,我相信这些将是符号。在Ruby文档中:“Symbol对象表示Ruby解释器中的名称和一些字符串”。Java中的这些是什么?编译器如何处理它们?作为标记或引用文字?java中的enum是类enum的对象,如上所述,它们是java中的完整对象 这意味着它们可以有实例和类方法 您可以在中找到,这

例如来自Java文档:

public enum Day {
  MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}

在Ruby中,我相信这些将是
符号
。在Ruby文档中:“
Symbol
对象表示Ruby解释器中的名称和一些
字符串”。Java中的这些是什么?编译器如何处理它们?作为
标记
或引用文字?

java中的enum是类
enum
的对象,如上所述,它们是java中的完整对象

这意味着它们可以有实例和类方法

您可以在中找到,这是一个
通用对象
。。。可以是预定义的或类型为
Object


您可以阅读有关java中的
泛型的更多信息,以熟悉它

它们是
枚举
类的常量实例,如果您感兴趣,请查看和实际的。所以如果你有这个:

public enum Weekday
{
   MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
它将在内部翻译为:

class Weekday extends Enum
{
  public static final Weekday MONDAY  = new Weekday( "MONDAY",   0 );
  public static final Weekday TUESDAY = new Weekday( "TUESDAY ", 1 );
  // more constants

  private Weekday( String s, int i )
  {
    super( s, i );
  }

  // more methods
}

(示例来自,抱歉,它不是英语资源)

MONDAY
Enum
的一个实例,是类
Day
的最后一个静态字段。每个枚举包含一个字段“字符串名称”。你可以做:

 Enum<Day> x = Day.MONDAY;

我知道枚举对象属于
enum
类,但是
MONDAY
tuday
是什么?它是一种特殊的引用文字,比如
null
?我不确定,但我认为它是一个
对象,是java中所有类的根:DSo我忘记了java关注继承,而不是像Ruby那样使用duck类型,因为我很聪明。因此,Java解释器已经知道将这些对象视为
对象
,而不必使用
符号
对象来委托如何处理未显式声明为变量或方法等的对象。?B:D,我认为它正是这样做的。。。从来没有必要调查这样的事情。谢谢你给我这个机会:D
enum MySingleton{
    INSTANCE;

    void instanceMethod();
}