以下代碼獲取在接口SomeGenericInterface
中一般聲明的第一個類型參數類,它在類SomeClass
中得到具體實現。獲取泛型類型參數的正確方法
此代碼實際工作。
的問題是:是否在任何情況下工作,即是以下兩個類方法:
getInterfaces()
getGenericInterfaces()
保證始終有相同數量的元素這些方法返回接口的相同順序?
還是有一些更安全的方法來做到這一點?
<!-- language: lang-java -->
Class clazz = SomeClass.class;
Class classes[] = clazz.getInterfaces();
Type types[] = clazz.getGenericInterfaces();
ParameterizedType found = null;
for (int i=0; i<classes.length; i++) {
if ( classes[i] == SomeGenericInterface.class) {
found = (ParameterizedType) types[i];
break;
}
}
if (found == null) {
return null;
}
Class firstType = (Class) found.getActualTypeArguments()[0];
這正是我所期待的。謝謝,rsp! – hpgisler 2011-12-19 20:13:38
來自http://stackoverflow.com/questions/22250619/classgetinterfaces-and-classgetgenericinterfaces-return-arrays-of-differin我必須警告,這個假設只適用於javac編譯的代碼。如果課程來自其他地方,所有投注都關閉 – blackdrag 2014-03-12 13:36:46