假设我有一个方法:
public void method(LinkedList<Integer> intList);
Run Code Online (Sandbox Code Playgroud)
我使用反射来获取此方法的java.lang.reflect.Method,我想获取ParameterizedType,即.链表<Integer>的.
不幸的是,使用Method.getParameterTypes()我似乎只能得到非参数化的Class Class <LinkedList>.
但是在我的调试器中,如果我查看Method对象,我会看到有一个"签名"字段似乎确实包含通用信息:
(Ljava/util/LinkedList<Ljava/lang/Integer;>;)V
Run Code Online (Sandbox Code Playgroud)
那么如何从Method对象中获取LinkedList参数化类型呢?
使用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]);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
java.util.LinkedList<java.lang.Integer>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |