【发布时间】:2010-10-08 09:23:27
【问题描述】:
在给定值的情况下,如何获取 Java Enum 类型的名称?
我有以下适用于特定枚举类型的代码,我可以让它更通用吗?
public enum Category {
APPLE("3"),
ORANGE("1"),
private final String identifier;
private Category(String identifier) {
this.identifier = identifier;
}
public String toString() {
return identifier;
}
public static String getEnumNameForValue(Object value){
Category[] values = Category.values();
String enumValue = null;
for(Category eachValue : values) {
enumValue = eachValue.toString();
if (enumValue.equalsIgnoreCase(value)) {
return eachValue.name();
}
}
return enumValue;
}
}
【问题讨论】:
-
您是否有特殊原因要使用 Enum 的 name() 以外的其他内容来查找它们?这会让很多人感到困惑,而且你也不能使用简单的
Category.valueOf(name)。 -
真的可以让它更通用吗?我用了很多
nameOf(String name),现在每个我都会写一个*Enum.values().stream().filter(...).findAny().get(),太烦人了。
标签: java enums enumeration