我想创建一个方法,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)
为什么要实现自己的,当你可以使用Java自己的实现时呢?
YourEnum yourEnum = Enum.valueOf(YourEnum.class, value);
Run Code Online (Sandbox Code Playgroud)
然后你的方法变成:
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)
| 归档时间: |
|
| 查看次数: |
3332 次 |
| 最近记录: |