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。
答案 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
。另一方面,您可以添加一个方法,该方法返回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;
}
// ...
}
答案 3 :(得分:1)
如果名称作为String
出现,只需执行此操作,
int getId(String name){
EnumCountry country = EnumCountry.valueOf(name);
return country.getId();
}