从许多枚举的值中找到枚举的最佳方法

时间:2014-12-10 15:16:02

标签: java enums

我有很多枚举。

我想为所有枚举添加一个通用方法,允许通过值查找枚举。就像这样的事情:

public static T getEnumFromVal(String val) {
    for (T e : values()) {
        if (e.getVal().equals(val)) {
            return e;
        }
    }
    return null;
}

我可以让enum实现一个接口,但不幸的是我使用的是Java 6而且我不能声明一个静态方法:( ...

你有其他想法吗?

2 个答案:

答案 0 :(得分:8)

此方法已存在于Java API中:

Enum.valueOf(Type.class, "Enum String");

此方法也存在于所有枚举类型中,例如,如果您有一个名为Color的枚举:

Color.valueOf("RED");

将返回枚举类型Color.RED

Java 6 Enum doc

答案 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()方法的公共接口