1
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;
  }
}

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

4

4 回答 4

9

您可以简单地添加如下方法 -

  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();
  }
}
于 2017-10-10T06:45:38.720 回答
1

你不能因为它们的类型不兼容 - 即Stringvs Integer。另一方面,您可以添加一个返回 a 的方法,该方法String结合了nameid

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;
  }

  // ...
}
于 2017-10-10T06:46:14.697 回答
1

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

int getId(String name){
  EnumCountry country = EnumCountry.valueOf(name);
  return country.getId();
}
于 2017-10-10T06:46:36.297 回答
1

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

Ethiopia.getId()

或者:

Tanzania.getId()

或者,假设你的意思是你有字符串"Ethiopia",那么你也可以这样做EnumCountry.valueOf("Ethiopia").getId()。希望这能回答你的问题!

于 2017-10-10T06:42:04.990 回答