【问题标题】:how to get enum id using its enum name如何使用枚举名称获取枚举 ID
【发布时间】:2017-10-10 06:38:51
【问题描述】:
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。

【问题讨论】:

标签: java enums cuba-platform cuba


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    Ethiopia.getId()
    

    或者:

    Tanzania.getId()
    

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

    【讨论】:

      【解决方案3】:

      你不能因为它们的类型不兼容 - 即String vs Integer。另一方面,您可以添加一个返回 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;
        }
      
        // ...
      }
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-05
          相关资源
          最近更新 更多