我正在寻找在Java中遍历任意对象层次结构的方法。显然,直接使用反射API是一种选择,但是在它之上构建哪些库可以使任务更容易?
具体来说,我想从实现给定接口的基础对象中直接或间接获取所有引用的对象。层次结构可以包含循环,虽然我正在寻找的对象将形成一个DAG,所以理想情况下我希望它们以拓扑顺序返回。
答案 0 :(得分:3)
你看过Apache BeanUtils了吗? - > http://commons.apache.org/beanutils/
我不知道它们是否涵盖了您需要的所有东西,但它非常好且易于使用。
答案 1 :(得分: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);
}
}