2011-11-30 3 views
1

Java에서 임의의 개체 계층을 트래버스하는 방법을 찾고 있습니다. 분명히 리플렉션 API를 직접 사용하는 것이 하나의 옵션이지만 태스크를 더 쉽게 만들 수있는 라이브러리는 무엇입니까?개체 hirerarchy 이동

특히 주어진 인터페이스를 구현하는 기본 객체에서 직접 또는 간접적으로 참조되는 모든 객체를 잡고 싶습니다. 계층 구조는 루프를 포함 할 수 있지만, 찾고있는 객체가 DAG를 형성하므로 이상적으로는 토폴로지 순서로 반환해야합니다.

답변

3

아직 Apache BeanUtils를 보셨습니까? ->http://commons.apache.org/beanutils/

내가 필요한 모든 것을 다루고 있는지 알 수는 없지만 사용하기 쉽습니다.

1

다음은 제안 사항입니다. 객체에 MyObject 인터페이스를 구현 한 경우 다음은 모든 구성 요소를 가로 질러 map으로 추출합니다.

public interface MyObject{ 
     String getName(); 
     void addChild(MyObject obj); 
     MyObject[] getChildren(); 
} 

// This will visit and extract all children 
public void visitMyObject(MyObject cmp, Map hashMap){ 
     // Add this component 
     if(cmp != null) hashMap.put(cmp.getName(), cmp); 
     // Go visit all children 
     for(MyObject subComponent : cmp.getChildren()){ 
      visitMyObject(subComponent, hashMap); 
     } 
} 
+0

불행히도 개체 계층 구조는 훨씬 더 복잡하며 많은 (아직 컴파일 타임에있는) 개체가있을 수 있습니다.이 개체는 여전히 내가 관심있는 내용을 참조 할 수 있습니다. – biziclop