我试图通过反射将枚举常量作为参数传递给方法。这里有一个简单的例子,它演示了我的问题的一个非常简化的版本。(假设我必须使用反射)
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?)
}
}
我该怎么做呢?
谢谢,
发布于 2018-06-07 03:50:21
您不需要直接访问该字段。使用Enum.valueOf()
Enum.valueOf(cl.asSubclass(Day.class), "MONDAY")
但是很难理解为什么不能直接使用Day.class
。详细说明您的用例可能会有所帮助。
发布于 2018-06-07 04:21:37
试试java.lang.reflect.Field.get(Object obj)
Day day = (Day) field.get(cl);
print(day);
https://stackoverflow.com/questions/50728332
复制相似问题