遍历对象层次结构



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

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

你看过Apache BeanUtils了吗?-> http://commons.apache.org/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);
      }
}

相关内容

  • 没有找到相关文章

最新更新