我想迭代一个实现 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中添加了两个Object。
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() 对于类型 Object 来说是未定义的”。我在这里错过了一些基本概念吗?我无法迭代 Collection 实现是 foreach 的限制之一吗?任何建议将不胜感激?谢谢
最佳答案
您必须使用它将包含的特定对象类型来声明Collection
:
private final Collection<B> p = new ArrayList<>();
此外,请指出您用于实现集合
的类型:
class A implements Collection<B>
.. 这还需要在 add()
方法中进行调整:
public boolean add(B e) {
return p.add(e);
}
关于java - 使用 foreach 迭代 Collections 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154116/