使用foreach遍历Collections对象

时间:2019-07-22 21:42:12

标签: java collections

我想遍历实现Collection的对象。

class A implemets Collection{
    private final Collection p= new ArrayList();
    @Override
    public boolean add(Object e) {
        return p.add(e);
    }

    public void remove() { }
    //
}

在main方法中,我向集合A添加了两个对象。

A a = new A();
B b = new B();
B b1 = new B();
a.add(b);
a.add(b1);

我想使用foreach遍历A中的所有B。我使用了迭代器,并且有效,但是我特别想使用foreach或增强的for循环,例如:

a.foreach(eachB -> { eachB.getSomeValueFromGetterMethodInB(); })

但是,它引发了我错误“对于类型Object,他的方法getSomeValueFromGetterMethodInB()未定义”。我在这里缺少一些基本概念吗?我无法遍历Collection实现是foreach的限制之一吗?任何建议将不胜感激?谢谢

1 个答案:

答案 0 :(得分:2)

您必须声明Collection并将包含的特定对象类型:

private final Collection<B> p = new ArrayList<>();

另外,请指出您用于实现Collection的类型:

class A implements Collection<B>

..这也需要在add()方法中进行调整:

public boolean add(B e) {
    return p.add(e);
}