我想在参数中传递的任何Enum类上创建一个实现valueOf
的方法(并且还包含一些专门的错误/缺失名称代码)。
基本上,我有几个Enum,如:
enum Enum1{ A, B, C }
enum Enum2{ D, E, F }
我想要一个包裹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;
}
我想跟其致电:getEnum(Enum1,"A")
。但它不喜欢它:
java: cannot find symbol
symbol: variable Enum1
location: class Main
答案 0 :(得分:6)
为什么要实现自己的,当你可以使用Java自己的实现时呢?
YourEnum yourEnum = Enum.valueOf(YourEnum.class, value);
然后你的方法变成:
private static <E extends Enum<E>> E getEnum(Class<E> enumClass, String name){
try {
return Enum.valueOf(enumClass, name);
} catch(IllegalArgumentException e) {
return null;
}
}
你可以用:
来调用它getEnum(Enum1.class, "A")
答案 1 :(得分:4)
对于传球课程,您应该使用class
getEnum(Enum1.class,"A")
然后将方法签名更新为
private static Enum getEnum(Class<? extends Enum> E, String name){
...
}