Как передать аргумент перечисления через отражение в Java - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь передать константу перечисления в качестве аргумента методу через отражение.Вот простой пример, который демонстрирует очень упрощенную версию моей проблемы.(Предположим, я должен использовать отражение)

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?)
    }
}

Как мне это сделать?

Спасибо,

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Попробуйте java.lang.reflect.Field.get(Object obj):

Day day = (Day) field.get(cl);
print(day);
0 голосов
/ 06 июня 2018

Вам не нужно получать доступ к полю напрямую.Используйте Enum.valueOf():

Enum.valueOf(cl.asSubclass(Day.class), "MONDAY")

Но трудно понять, почему вы не можете использовать Day.class напрямую.Это может помочь уточнить ваш вариант использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...