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

如何迭代存储为对象类型的Java集合?,java,Java,假设我有一个a类的列表,定义为: Object list = new ArrayList<A>(); Object list=new ArrayList(); 我想重复一下。可能吗?如果是,那怎么办?即使我找到了使用反射的列表类型,那么我也不会进入A级。 另外,请注意,我不知道什么是A级。我只有一个列表。如果您按照所示的方式实例化一个ArrayList(您希望它被视为对象-这个类不允许迭代,实现Iterable接口的类提供了这个函数),然后您需要迭代它的元素,您可以将列表从对象转

假设我有一个a类的列表,定义为:

Object list = new ArrayList<A>();
Object list=new ArrayList();
我想重复一下。可能吗?如果是,那怎么办?即使我找到了使用反射的列表类型,那么我也不会进入A级。
另外,请注意,我不知道什么是A级。我只有一个列表。

如果您按照所示的方式实例化一个
ArrayList
(您希望它被视为
对象
-这个类不允许迭代,实现
Iterable
接口的类提供了这个函数),然后您需要迭代它的元素,您可以
列表
对象
转换为
可编辑
,这样迭代就可以用于
列表

    for(A a : (Iterable<A>) list) {
        // do stuff
    }
    Object list = new ArrayList<A> ();
    Iterator<A> it = ((Iterable<A>)list).iterator();
您可能需要查看的Java API文档,以了解更多关于Iterable接口的信息


编辑:多亏了费德里科·佩拉尔塔·沙夫纳和卢卡斯2302的有益建议,这个答案才得以编辑。我找到了这样做的方法。我是这样做的:

List<?> list1 = (List<?>) list;

这是否合法?
对象
无法迭代。您需要将其强制转换为适当的类型。如果无法迭代类型
对象
,则需要将其强制转换回类型
Iterable
此语句应该是什么?它肯定与合法的java代码不太接近甚至不编译…您不需要迭代器。转换为
Iterable
就足够了,然后您可以使用foreach循环:
for(a:((Iterable)list)){/*使用*/}
@federicoperataschaffner谢谢您对我的答案发表评论。我编辑它是为了涵盖你的建议-我想我有点误解了OP的问题,认为这里需要迭代器。@luk2302感谢你提供了这个有用的链接-我编辑我的答案是为了填补这个空白。但我不知道类a。这与在问题中声明它为对象不同。
for(Object o : list1) {
// code
}