2012-04-12 2 views
1

はのは、私は方法があるとしましょう:Javaリフレクションを使用すると、パラメータ化された型のパラメータをメソッドにどのように取得できますか?

public void method(LinkedList<Integer> intList); 

つまり、私はこの方法のためjava.lang.reflect.Methodオブジェクトを取得するためにリフレクションを使用して、私はは、ParameterizedTypeを取得したいです。 LinkedList <整数>。

残念ながら、Method.getParameterTypes()を使用すると、パラメータ化されていないクラスクラスを取得したように見えます。<LinkedList>私はMethodオブジェクトを見れば

は、しかし、私のデバッガで、私はさんは一般的な情報を含んでいるように見えるん「署名」フィールドがあることを参照してください。

(Ljava/util/LinkedList<Ljava/lang/Integer;>;)V 

それでは、どのように私は、LinkedListのパラメータ化を得ることができますMethodオブジェクトからタイプしますか?

答えて

6

Method.getGenericParameterTypesを使用してください。サンプルコード:

import java.lang.reflect.*; 
import java.util.*; 

public class Test { 

    public void foo(LinkedList<Integer> intList) { 
    } 

    public static void main(String[] args) throws Exception { 
     Method method = Test.class.getMethod("foo", LinkedList.class); 
     Type[] parameters = method.getGenericParameterTypes(); 
     System.out.println(parameters[0]); 
    } 
} 

出力:

java.util.LinkedList<java.lang.Integer> 
関連する問題