如何通过Java中的反射传递枚举参数

Sam*_*ilu 1 java reflection

我试图通过反射将枚举常量作为参数传递给方法.这是一个简单的例子,演示了我的问题的一个非常简化的版本.(假设我必须使用反射)

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?)
    }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

谢谢,

shm*_*sel 5

您无需直接访问该字段.用途Enum.valueOf():

Enum.valueOf(cl.asSubclass(Day.class), "MONDAY")
Run Code Online (Sandbox Code Playgroud)

但很难理解为什么你不能Day.class直接使用.它可能有助于详细说明您的用例.