通用Enum.valueOf方法:参数中的Enum类,并返回Enum项目 [英] generic Enum.valueOf method : Enum class in parameter and return Enum item
问题描述
我想制作一个在传入参数的任何Enum类上实现 valueOf
的方法(并包装一些特殊的错误/缺失名称代码).所以基本上,我有几个枚举,例如:
I'd like to make a method that implement valueOf
on any Enum class passed in parameter (and also wrap some specialized error/missing-name code).
So basically, I have several Enum such as:
enum Enum1{ A, B, C }
enum Enum2{ D, E, F }
我想要一个环绕 valueOf
的方法.我找不到直接在参数中传递Enum类的方法,可以在该参数上调用 valueOf
.这是我想出的:
And I want a method that wrap around valueOf
. I could not find a way to directly pass an Enum class in parameter on which I could call valueOf
. Here is what I came up with:
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")
.但它不喜欢它:
Which I want to call with: getEnum(Enum1,"A")
. But it does not like it:
java: cannot find symbol
symbol: variable Enum1
location: class Main
推荐答案
为什么可以使用Java自己的实现来实现自己的?
Why implement your own, when you can use Java's own implementation for this?
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;
}
}
,您可以通过以下方式调用它:
and you can call it with:
getEnum(Enum1.class, "A")
这篇关于通用Enum.valueOf方法:参数中的Enum类,并返回Enum项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!