如何迭代存储为Object类型的Java集合?

时间:2018-02-28 21:26:08

标签: java

假设我有一个定义为:

的A类列表
Object list = new ArrayList<A>();

我想迭代这个。可能吗?如果是,那怎么样?即使我发现使用反射的列表类型,我也不会去A级。 另外,请注意我不知道A类是什么。我只是有名单。

2 个答案:

答案 0 :(得分:1)

如果您以ArrayList的方式实例化Object(您希望将其视为Iterable - 此类不允许迭代,实现{{1接口提供此功能),然后你需要迭代它的元素,你可以强制这个listObjectIterable,这样迭代可用于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
}