我试图通过反射将枚举常量作为参数传递给方法。这是一个简单的例子,演示了我的问题的一个非常简化的版本。 (假设我必须使用反射)
enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
public class Main {
public void print(Day d) {
System.out.println(d);
}
public static void main(String[] args) throws Exception
{
Class<?> cl = Class.forName("Day");
Field field = cl2.getDeclaredField("MONDAY");
print(_what_to_pass_here?)
}
}
我该怎么做?
谢谢,
答案 0 :(得分:5)
您不需要直接访问该字段。使用Enum.valueOf()
:
Enum.valueOf(cl.asSubclass(Day.class), "MONDAY")
但很难理解为什么你不能直接使用Day.class
。它可能有助于详细说明您的用例。
答案 1 :(得分:1)
尝试java.lang.reflect.Field.get(Object obj)
:
Day day = (Day) field.get(cl);
print(day);