generic Enum.valueOf方法:参数中的枚举类并返回枚举项

Juh*_*uh_ 1 java enums

我想创建一个方法,valueOf在任何传入参数的Enum类上实现(并且还包装一些专门的错误/缺失名称代码).基本上,我有几个Enum如:

enum Enum1{ A, B, C }
enum Enum2{ D, E, F }
Run Code Online (Sandbox Code Playgroud)

我想要一个环绕的方法valueOf.我找不到直接在我可以调用的参数中传递Enum类的方法valueOf.这是我想出的:

private static Enum getEnum(Class<Enum> E, String name){
    for(Enum e: E.getEnumConstants())
        if(e.name().equals(name)){
            return e;
        }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我想打电话给:getEnum(Enum1,"A").但它不喜欢它:

java: cannot find symbol
  symbol:   variable Enum1
  location: class Main
Run Code Online (Sandbox Code Playgroud)

Epi*_*rce 6

为什么要实现自己的,当你可以使用Java自己的实现时呢?

 YourEnum yourEnum = Enum.valueOf(YourEnum.class, value);
Run Code Online (Sandbox Code Playgroud)

http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#valueOf(java.lang.Class,%20java.lang.String)

然后你的方法变成:

private static <E extends Enum<E>> E getEnum(Class<E> enumClass, String name){
    try {
        return Enum.valueOf(enumClass, name);
    } catch(IllegalArgumentException e) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以用它来调用它:

getEnum(Enum1.class, "A")
Run Code Online (Sandbox Code Playgroud)