有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用枚举名获取枚举id

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

  1. # 1 楼答案

    它只需调用其getId()方法即可:

    Ethiopia.getId()
    

    或:

    Tanzania.getId()
    

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

  2. # 2 楼答案

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

    int getId(String name){
      EnumCountry country = EnumCountry.valueOf(name);
      return country.getId();
    }
    
  3. # 3 楼答案

    您不能这样做,因为它们的类型不兼容-即StringInteger。另一方面,您可以添加一个方法,该方法返回一个结合了nameidString

    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;
      }
    
      // ...
    }
    
  4. # 4 楼答案

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

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