我希望有类似MOTIVE { GET_PLAYER, GET_FLAG }
的内容。
在我的对象中,我想要像
这样的东西this.motive = MOTIVE.GET_PLAYER
我该怎么做?
答案 0 :(得分:10)
您在谈论enum
。
答案 1 :(得分:2)
或许这样的事情?
/**
* Don't use caps for a "class" name :)
*/
public enum Motive {
GET_PLAYER,
GET_FLAG;
}
或(有额外字段):
/**
* Don't use caps for a "class" name :)
*/
public enum Motive {
GET_PLAYER("Assessination Quest"),
GET_FLAG("Capture the Flag PvP");
private Motive(final String desc) {
this.description = desc;
}
public String getDescription() {
return description;
}
private final String description;
}
用法:
public final class MyClass {
private Motive motive;
public MyClass(final Motive motive) {
this.motive = motive;
}
}
还可以将Motive.UNKNOWN视为可以初始化字段的默认情况,因此您无法获得空值。
并且switch语句可以打开枚举!
一个问题:您无法编译枚举类,编译枚举类,更改枚举类(并再次编译)并期望它能够正常工作。枚举在编译时有点内联;允许编译器在enum-using类中使用枚举的硬编码“序数”。始终重新编译枚举类和枚举类,以便它们保持同步,
答案 2 :(得分:1)