我有很多枚举。
我想为所有枚举添加一个通用方法,允许通过值查找枚举。就像这样的事情:
public static T getEnumFromVal(String val) {
for (T e : values()) {
if (e.getVal().equals(val)) {
return e;
}
}
return null;
}
我可以让enum实现一个接口,但不幸的是我使用的是Java 6而且我不能声明一个静态方法:( ...
你有其他想法吗?
答案 0 :(得分:8)
此方法已存在于Java API中:
Enum.valueOf(Type.class, "Enum String");
此方法也存在于所有枚举类型中,例如,如果您有一个名为Color
的枚举:
Color.valueOf("RED");
将返回枚举类型Color.RED
。
答案 1 :(得分:2)
public static <T extends Enum<T> & HasVal> getEnumFromVal(Class<T> enumClass, String val) {
for (T e : enumClass.getEnumConstants()) {
if (e.getVal().equals(val)) {
return e;
}
}
return null;
}
其中HasVal
是定义getVal()
方法的公共接口