我有几个像下面这样的枚举:
public enum Season {
SPRING, SUMMER, AUTUM, WINTER
}
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
我正在尝试为一个问题编写一个通用方法。
private void doSomethingWithAnyEnum(Class enumClass,String checkThisProperty)
{
if(EnumUtils.isValidEnum(enumClass, checkThisProperty))
{
//here i should be able to call valueOf(String) method on enum
//without bothering about the type coming in.
}
}
这样我就可以像这样调用这个方法:
doSomethingWithAnyEnum(Days.class,"blah") ;
doSomethingWithAnyEnum(Seasons.class,"blah");
我对如何传递枚举并在方法中使用相同的东西使用它的类和名称感到困惑。我尝试使用 simpleName()
但它在这里不起作用。有办法做到这一点吗?
最佳答案
你可能想像这样修改你的函数:
public <T extends Enum<T>> void doSomethingWithAnyEnum(Class<T> tClass, String name) {
T t = Enum.valueOf(tClass, name);
}
您的原始方法采用随机 Class enumClass
类类型,它接受任何类。将输入类视为枚举时会抛出运行时异常
关于Java enum.valueOf(String) 和 enum.class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50464635/