【问题标题】: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 的方法,该方法结合了 name 和 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;
}
// ...
}
【解决方案4】:
如果名称为String,只需执行此操作,
int getId(String name){
EnumCountry country = EnumCountry.valueOf(name);
return country.getId();
}