Java enum.valueOf(String) 和 enum.class

标签 java class object types enums

我有几个像下面这样的枚举:

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/

相关文章:

java - 在Java中将二维数组转换为图像?

java - 试图将 Java 变量传递给 sql 字符串

java - C++和Java编译过程的区别

c++ OpenGL 段错误

javascript - 为什么有人想在 React js 中将一个函数变成一个类

Javascript 对象说明

java - 简单的客户端-服务器应用程序 - 套接字问题

c++ - 不同命名空间 C++ 中类的循环依赖

javascript - 在 Javascript 中访问对象数组(或数组数组)

c++ - 默认初始化数据成员是对象?