假设我有一个定义为:
的A类列表Object list = new ArrayList<A>();
我想迭代这个。可能吗?如果是,那怎么样?即使我发现使用反射的列表类型,我也不会去A级。 另外,请注意我不知道A类是什么。我只是有名单。
答案 0 :(得分:1)
如果您以ArrayList
的方式实例化Object
(您希望将其视为Iterable
- 此类不允许迭代,实现{{1接口提供此功能),然后你需要迭代它的元素,你可以强制这个list
从Object
到Iterable
,这样迭代可用于list
:
for(A a : (Iterable<A>) list) {
// do stuff
}
或当您需要迭代迭代list
Object list = new ArrayList<A> ();
Iterator<A> it = ((Iterable<A>)list).iterator();
您可能需要查看Java API文档,以了解有关Iterable接口here的更多信息。
编辑:由于 Federico Peralta Schaffner 和 luk2302 的有用建议,编辑了这个答案。
答案 1 :(得分:0)
我找到了一种方法。我做了这样的事情:
List<?> list1 = (List<?>) list;
现在我可以迭代为,
for(Object o : list1) {
// code
}