2010-05-03 145 views

回答

4
Type genericSuperclass = x.getClass().getGenericSuperclass(); 
if (genericSuperclass instanceof ParameterizedType) { 
    Type[] types = 
     ((ParameterizedType) genericSuperclass).getActualTypeArguments(); 
} 

然後你可以使用Class.isAssignableFrom,如果type instanceof Class,以驗證它是否是Foo與否。

if (types[0] instanceof Class) { 
    if (x.getClass().isAssignebleFrom(((Class) type[0]))){ 
     // do something 
    } 
} 
+0

什麼是'ParameterizedType'?你不能在'instanceof'中使用泛型類型參數(典型的'K','V','E','T'),對嗎? – polygenelubricants 2010-05-03 14:19:17

+1

'ParameterizedType'表示(在這種情況下)以下信息:'Bar ' - 即(據我所知) - geejay需要知道的內容。 – Bozho 2010-05-03 14:28:08

+0

謝謝,但我如何使用它來確定它是否是一個子類型(Bar的是)? – geejay 2010-05-03 14:31:26