2012-01-02 3 views
4

У меня есть метод в классе, как это:типов аргументов посланных getDeclaredMethod (String, Class []) в Java Reflection

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() но должна быть более прямым путем ...

+3

Работает отлично для меня. Вы получили сообщение об ошибке? Из-за стирания типа во время выполнения не существует «Список ». –

+0

Я просто не нахожу метод. он приходит как null – MozenRath

+1

Является ли 'cls' правильным классом? Ноль?! Вы должны получить 'NoSuchMethodException', если метод не существует. –

ответ

9

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

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

Родовой тип не требуется во время выполнения.

Смежные вопросы