Java:这个数据结构叫什么?

时间:2010-09-30 18:13:29

标签: java

我希望有类似MOTIVE { GET_PLAYER, GET_FLAG }的内容。

在我的对象中,我想要像

这样的东西
this.motive = MOTIVE.GET_PLAYER

我该怎么做?

3 个答案:

答案 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)

枚举examples& doc