測試(使用反射)最簡單的方法是什麼,給定的方法(即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