Java中的枚举与其他语言中的枚举不同.他们需要一些使用.从本质上讲,枚举是一个特殊的类,你声明的每个枚举都是该类的一个对象:
public enum Day {
MONDAY, TUESDAY, WEDNESDAY
}
Run Code Online (Sandbox Code Playgroud)
星期一,星期二和星期天是星期日的对象,使用普通类可以获得几乎相同的效果,但枚举语法明确指出了你的意图.此外,您无法在其他地方创建THURSDAY - 仅在枚举括号内.这意味着编译器始终知道枚举值的完整列表,并允许Java在switch语句等地方使用枚举,因为编译器具有创建跳转表和检查代码正确性所需的所有信息. .
所以MONDAY 不是某个整数值的标签,比如其他语言的枚举.它是一个像任何其他Java对象一样的对象.这就是为什么你不把它们放在引号中.这就像写作:
final static Day MONDAY = new Day();
final static Day TUESDAY = new Day();
Run Code Online (Sandbox Code Playgroud)
等等.你甚至可以做这样的技巧:
public enum Day {
MONDAY("Mon", false), TUESDAY("Tue", false), WEDNESDAY("Wed", true);
private String shortForm = null;
private boolean humpDay = false;
Day(String shortForm, boolean humpDay) {
this.shortForm = shortForm;
this.humpDay=humpDay;
}
public String getShortForm() {
return shortForm;
}
public boolean isHumpDay() {
return humpDay;
}
}
Run Code Online (Sandbox Code Playgroud)
MONDAY,TUESDAY,WEDNESDAY中的每一个都是Day的对象,每个都有自己的成员,包括shortForm和humpDay.甚至还有一个构造函数.看到?对象,而不是值.
需要TUESDAY的简短表格吗?只需要做TUESDAY.getShortForm().在其他语言中,您不能使用重新标记的整数常量范例.
我希望有所帮助.Java枚举非常强大,但对于习惯于使用其他语言的枚举的人来说,直到他们有了突破性的时刻("我现在看到它们!它们就像对象声明!")可能会令人困惑.
归档时间: |
|
查看次数: |
1050 次 |
最近记录: |