Java 遍历对象层次结构

Java 遍历对象层次结构,java,reflection,Java,Reflection,我正在寻找在Java中遍历任意对象层次结构的方法。显然,直接使用反射API是一种选择,但是在它之上构建了哪些库可以使任务更容易呢 具体来说,我想从实现给定接口的基础对象中获取直接或间接引用的所有对象。层次结构可以包含循环,尽管我正在寻找的对象将形成一个DAG,因此理想情况下,我希望它们以拓扑顺序返回。您看过Apache BeanUtils了吗?-> 我不知道它们是否涵盖了您需要的所有内容,但它非常好用。这里有一个建议。如果您的对象实现了MyObject接口,下面将遍历所有组件并将其提取到map

我正在寻找在Java中遍历任意对象层次结构的方法。显然,直接使用反射API是一种选择,但是在它之上构建了哪些库可以使任务更容易呢


具体来说,我想从实现给定接口的基础对象中获取直接或间接引用的所有对象。层次结构可以包含循环,尽管我正在寻找的对象将形成一个DAG,因此理想情况下,我希望它们以拓扑顺序返回。

您看过Apache BeanUtils了吗?->


我不知道它们是否涵盖了您需要的所有内容,但它非常好用。

这里有一个建议。如果您的对象实现了
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);
      }
}

不幸的是,对象层次结构要复杂得多,其中可能有许多未知(即在编译时)对象,它们仍然可以引用我感兴趣的东西。