首页 > 解决方案 > 使用 foreach 迭代集合对象

问题描述

我想遍历一个实现 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(); })

但是,它向我抛出错误“他的方法 getSomeValueFromGetterMethodInB() 未定义对象类型”。我在这里错过了一些基本概念吗?我无法迭代 Collection 实现是 foreach 的限制之一吗?任何建议将不胜感激?谢谢

标签: javacollections

解决方案


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

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

此外,请指明您用于实现的类型Collection

class A implements Collection<B>

..这也需要调整add()方法:

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

推荐阅读