如果您的对象具有List<Object> list
,其元素本身可以引用也具有List<Object> list
的对象,其元素本身可以引用也具有List<Object> list
的对象,等等......你想在这个结构中找到特定类型的对象。
实现这一目标的最佳方法是什么?
我当前的方法是遍历第一个列表,询问每个元素obj.getClass() == XYZ.class
,如果是这样的话,拿出元素,投射它,得到它List<Object> list
并像以前一样继续。
我绑定到这些列表,因为这些类是从XSD架构生成的JAXB。
所有这些迭代和铸件都是一个巨大的混乱,看起来不那么聪明......
答案 0 :(得分:0)
我认为你可以使用这种递归函数:
public List<Test> getTestElements(List<Object> list) {
List<Test> result = new ArrayList<Test>();
for (Object o : list) {
if (o instanceof Test) {
result.add((Test) o);
} else if (o instanceof List) {
result.addAll(getTestElements((List<Object>) o));
}
}
return result;
}
它将返回输入列表中存在的所有Test对象的列表。
答案 1 :(得分:0)