Java 枚举变量是什么样的数据结构?
例如来自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中的完整对象 这意味着它们可以有实例和类方法 您可以在中找到,这
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();
}