2010-05-03 64 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