типы аргументов, отправленные в getDeclaredMethod (String, Class []) в отражении Java - PullRequest
4 голосов
/ 02 января 2012

У меня есть метод в классе, подобный этому:

public static void postEvents(List<RuleEvent> eventList) {
    for(RuleEvent event:eventList)
        if(canProcess(event))
            findListenerAndPost(event);
    }

, и я хочу получить к нему доступ, используя отражение так:

Class partypes[] = new Class[1];
partypes[0] = List.class;    //does not find the method as it is of List<RuleEvent>
postMethod = cls.getMethod("postEvents", partypes);

Итак, как мне получить классобъект List<RuleEvent> ????

Я уже знаю способ ((List<RuleEvent>) new ArrayList<RuleEvent>()).getClass(), но должен быть более прямой путь ...

1 Ответ

9 голосов
/ 02 января 2012

Все, что вам нужно, это следующее

cls.getMethod("postEvents", List.class).invoke(null, eventList);

Универсальный тип не требуется во время выполнения.

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