2014-07-22 30 views
0

我知道,我可以用如何检查成员变量是否是Java中具有反射的Map?

Collection.class.isAssignableFrom(field.getType()) 

检查清单,但我怎么能检查是否在一个类中的字段是Map的实现?

void myMethod(Class<?> classToCheck) { 
     Field[] fields = classToCheck.getDeclaredFields(); 

     for(Field field:fields) { 
      // check if field implements Map<?,?> 
     } 
    } 
+1

什么'instanceof'? – stevecross

+1

'Map.class.isAssignableFrom(field.getType())'? – Keppil

+1

@Keppil啊笨我我忘记了“班”当我尝试Map.isAssignableFrom(...)是的,这应该做的伎俩 - thx! – KIC

回答

3

可以使用Field#getType()方法,该方法将返回该领域的Class<?>

for(Field field:fields) { 
    Class<?> clazz = field.getType(); 
    boolean isItAMap = Map.class.isAssignableFrom(clazz); 
} 
+5

OP已经在使用它来检查“Collection”。 – Keppil

0

你可以尝试使用:

Map.class.isAssignableFrom(field.getType()) 
+0

这与@kocko回答相同。 – stevecross

+4

@feuerball:现在是在kocko编辑他的答案之后,它不是以前。 – Keppil

+2

@feuerball:是的,我得到了人工验证检查,这延迟了我的回答! –

相关问题