2014-07-22 27 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:是的,我得到了人工驗證檢查,這延遲了我的回答! –

相關問題