如何使用其枚举名称获取枚举ID

时间:2017-10-10 06:38:52

标签: java enums cuba-platform cuba

public enum EnumCountry implements EnumClass<Integer> {

  Ethiopia(1),
  Tanzania(2),
  private Integer id;

  EnumCountry(Integer value) {
    this.id = value;
  }

  public Integer getId() {
    return id;
  }

  @Nullable
  public static EnumCountry fromId(Integer id) {
    for (EnumCountry at : EnumCountry.values()) {
      if (at.getId().equals(id)) {
        return at;
      }
    }
    return null;
  }
}

我有上面的代码。 如何使用其枚举名称获取Enum Id。

4 个答案:

答案 0 :(得分:7)

您只需添加如下方法 -

即可
  public static int getId(String enumCountryName) {
     return EnumCountry.valueOf(enumCountryName).getId();
  }

所以完整的课程将是这样的 -

public enum EnumCountry implements EnumClass<Integer> {

  Ethiopia(1),
  Tanzania(2);
  private Integer id;

  EnumCountry(Integer value) {
    this.id = value;
  }

  public Integer getId() {
    return id;
  }

  @Nullable
  public static EnumCountry fromId(Integer id) {
    for (EnumCountry at : EnumCountry.values()) {
      if (at.getId().equals(id)) {
        return at;
      }
    }
    return null;
  }

 public static int getId(String enumCountryName) {
     return EnumCountry.valueOf(enumCountryName).getId();
  }
}

答案 1 :(得分:1)

就像调用它的getId()方法一样简单:

Ethiopia.getId()

或者:

Tanzania.getId()

或者,假设您的字符串为"Ethiopia",那么您也可以EnumCountry.valueOf("Ethiopia").getId()。希望能回答你的问题!

答案 2 :(得分:1)

你不能因为他们的类型不兼容 - 即String vs Integer。另一方面,您可以添加一个方法,该方法返回Stringname合并的id

public enum EnumCountry implements EnumClass<Integer> {

  Ethiopia(1),
  Tanzania(2); // replaced comma with semicolon

  private Integer id;

  // ...

  public String getNameId() {
      // returns "Ethiopa 1"
      return name() + " " + id;
  }

  // ...
}

答案 3 :(得分:1)

如果名称作为String出现,只需执行此操作,

int getId(String name){
  EnumCountry country = EnumCountry.valueOf(name);
  return country.getId();
}