【发布时间】:2008-10-08 13:53:20
【问题描述】:
什么是最简单的测试方法(使用反射),给定的方法(即 java.lang.Method 实例)是否有返回类型,可以安全地转换为 List
考虑一下这个sn-p:
public static class StringList extends ArrayList<String> {}
public List<String> method1();
public ArrayList<String> method2();
public StringList method3();
方法 1、2、3 均满足要求。对方法 1 进行测试非常容易(通过 getGenericReturnType(),它返回 ParameterizedType 的实例),但对于方法 2 和 3,它并不那么明显。我想,通过遍历所有 getGenericSuperclass() 和 getGenericInterfaces(),我们可以非常接近,但我看不到,如何将 List
或者也许有一种完全不同(更简单)的方式,我忽略了?
编辑:对于那些研究它的人,这里是方法 4,它也满足要求,并显示了更多需要调查的案例:
public interface Parametrized<T extends StringList> {
T method4();
}
【问题讨论】:
-
哇,我很惊讶这如此复杂。我刚刚测试并了解到 (obj instanceof List
) 无法编译! wtf?
标签: java generics reflection