2012-10-18 58 views
0

如何從父類對象中的所有子類對象,並把在地圖中的Java春天如何從父類對象中的所有子類對象,並把在地圖中的Java春天

public static Map<String, Object> ConvertObjectToMap(Object obj, Integer number) throws   IllegalAccessException, IllegalArgumentException, InvocationTargetException { 
    Class<?> pomclass = obj.getClass(); 
    pomclass = obj.getClass(); 
    Method[] methods = obj.getClass().getMethods(); 
    Map<String, Object> map = new HashMap<String, Object>(); 
    for (Method m : methods) { 
     if (m.getName().startsWith("get") && !m.getName().startsWith("getClass")) { 
      Object value = null; 
      value = (Object) m.invoke(obj); 
      if (number <= 1) { 
       if (value.getClass().isAnnotation()) { 
        map.putAll(ConvertObjectToMap(value, number++)); 
       } else { 
        map.put(m.getName().substring(3), (Object) value); 
       } 
      } 
     } 
    } 
    return map; 
} 

這是正確的?

+0

沒有得到這個問題的「放在地圖java的春天」的一部分。 – Arham

+0

它工作**嗎? – ppeterka

+0

這是正確的嗎?不知道。你真的想做什麼? –

回答

0

因此,如果我正確地理解了你,你想要一張屬性名稱的地圖來表示它的值。

如何使用commons-beanutils而不是自己寫這個?一些東西沿線

import org.apache.commons.beanutils.PropertyUtils; 

public static Map<String, Object> ConvertObjectToMap(Object obj, Integer number) throws   IllegalAccessException, IllegalArgumentException, InvocationTargetException { 
    return PropertyUtils.describe(obj); 
} 

上面的代碼將調用所有的getters,所以這將與你的一樣。如果你想過濾「class」屬性,你可以在由describe返回的map上調用.remove(「class」)。

更多信息:commons-beanutils homepage

相關問題