2012-01-02 78 views
4

我有像這樣一類的方法:參數類型

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

工作正常,我。你有錯誤嗎?由於類型擦除,在運行時沒有'List '。 – 2012-01-02 14:09:55

+0

我只是找不到方法。它'cls'權類當屬無效 – MozenRath 2012-01-02 14:10:46

+1

是?空值?!如果方法不存在,你應該得到一個'NoSuchMethodException'。 – 2012-01-02 14:11:40

回答

9

所有你需要的是以下

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

泛型類型在運行時是不需要的。