假设我有一个方法:
public void method(LinkedList<Integer> intList);
我使用反射来获取此方法的java.lang.reflect.Method,我想获取ParameterizedType,即。链表&LT;整数&GT;
不幸的是,使用Method.getParameterTypes()我似乎只能得到非参数化的Class Class&lt; LinkedList&gt;。
但是在我的调试器中,如果我查看Method对象,我会看到有一个“签名”字段似乎确实包含通用信息:
(Ljava/util/LinkedList<Ljava/lang/Integer;>;)V
那么如何从Method对象中获取LinkedList参数化类型?
答案 0 :(得分: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>