例如来自Java docs:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
在Ruby中,我相信这些将是Symbols
。来自Ruby-Doc:" Symbol
对象代表Ruby解释器中的名称和一些Strings
"。这些在Java中是什么以及编译器如何处理它们?作为Token
还是参考文字?
答案 0 :(得分:2)
它们是enum
课程的常量实例,如果您有兴趣,请查看javadoc和实际的implementation。所以如果你有这个:
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
}
(here示例,抱歉这不是英文资源)
答案 1 :(得分:2)
MONDAY
是Enum<Day>
的一个实例,是Day
类的静态最终字段。每个Enum&lt; Day&gt;包含单个字段'String name'。你可以这样做:
Enum<Day> x = Day.MONDAY;
enum
s的实例可以在switch
语句中使用,在某些情况下,它们是字符串的类型替换。
枚举也常用于线程安全地创建单例:
enum MySingleton{
INSTANCE;
void instanceMethod();
}
答案 2 :(得分:1)