1

假设我有一个方法:

public void method(LinkedList<Integer> intList);

我使用反射来获取该方法的java.lang.reflect.Method,并且我想获取ParameterizedType,即。链表<整数>。

不幸的是,使用 Method.getParameterTypes() 我似乎只能得到非参数化的类 Class<LinkedList>。

但是,在我的调试器中,如果我查看 Method 对象,我会看到有一个“签名”字段似乎包含通用信息:

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

那么如何从 Method 对象中获取 LinkedList 参数化类型呢?

4

1 回答 1

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>
于 2012-04-12T14:16:08.307 回答