测试(使用反射)最简单的方法是什么,给定的方法(即java.lang.Method实例)是否有返回类型,可以安全地转换为列表<字符串>?如何测试方法返回类型是否匹配列表<String>
考虑这个片断:
public static class StringList extends ArrayList<String> {}
public List<String> method1();
public ArrayList<String> method2();
public StringList method3();
所有方法1,2,3符合要求。对于方法1(通过返回ParameterizedType的实例的getGenericReturnType())来测试它非常容易,但对于方法2和3来说,它并不那么明显。我想,通过遍历所有getGenericSuperclass()和getGenericInterfaces(),我们可以得到非常接近,但我不明白,如何将列表<E>中的TypeVariable(它发生在超类接口中的某处)与实际类型参数(即,这个E与String匹配的地方)。
或者也许有一种完全不同的(更容易)的方式,我忽略了吗?
编辑:对于那些寻找到它,这里是方法4,这也满足了要求,这说明一些情况,其中有可查:
public interface Parametrized<T extends StringList> {
T method4();
}
哇,我很惊讶这是如此复杂。我刚测试并了解到(obj instanceof List)不能编译!跆拳道? –
Kip
2008-10-08 17:52:36