lss233 1 min read
Java通过反射实例化枚举

假设我们有一个像这样的枚举:

public enum Status{
  ON,
  OFF
}

在某些情况下,我们需要通过反射的方式获得其中的某一个实例。

我们可以通过调用Enum中的valueOf方法,通过String获得枚举实例。

Class<?> statusClass = Class.forName("Status");
Method valueOfMethod = statusClass.getMethod("valueOf",String.class);
Object onStatus = valueOfMethod.invoke(null,"ON");

或者这么写:

Class<Enum> statusClass = (Class<Enum>) Class.forName("Status");
Object onStatus = Enum.valueOf(statusClass, "ON");