class A {
public void doit(List<String> args) {
}
public static class C extends A {
public static void main(String[] args) throws Exception {
Method m = C.class.getMethod("doit", List.class);
Type ptype = m.getParameters()[0].getParameterizedType();
System.out.println("type is -> " + ptype);
}
}
输出是
类型是 -> 接口 java.util.List
反射得到的
doit()
方法确实是编译器生成的,是一个综合桥接方法。但是,参数的参数化类型信息String丢失了。
有人知道为什么吗?如果我们想获取参数化类型,也许一个解决方法是公开 A
List<T> find(criteria, Class<T> theClass)
List<Customer> = find(..., Customer.class)