2012-10-18 2 views
0

에 넣고 넣어방법 부모 클래스 개체에서 모든 자식 클래스 객체를 얻을지도 자바 봄에 어떻게 부모 클래스 개체에서 모든 자식 클래스 객체를 얻는지도 자바 스프링

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

질문의 "지도 자바 봄에 넣어"부분을하지 않았다. – Arham

+0

** ** ** 작동합니까? – ppeterka

+0

맞습니까? 모르겠다. 너 정말로 무엇을하려고하는거야? –

답변

0

내가 올바르게 이해하면 속성 이름의지도를 원한다.

직접 작성하지 말고 커먼즈 - 콩 노트를 사용하는 것은 어떻습니까? 즉 당신과 같은 수 있습니다 있도록 코드 위

import org.apache.commons.beanutils.PropertyUtils; 

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

의 라인을 따라 뭔가, 모든 게터를 호출합니다. "class"속성을 필터링하려면 describe에서 반환 한지도에서 .remove ("class")를 호출하면됩니다.

상세 정보 : commons-beanutils homepage

관련 문제