2012-01-02 22 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 'はありません。 –

+0

私はちょうど方法を見つけることはありません。それはヌルとして来る – MozenRath

+1

'cls'は正しいクラスですか?ヌル?!メソッドが存在しない場合は、 'NoSuchMethodException'を取得する必要があります。 –

答えて

9

必要なのは、一般的なタイプは、実行時に必要とされていない

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

次のようです。