java - 使用 foreach 迭代 Collections 对象

标签 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中添加了两个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/

相关文章:

collections - 使用泛型创建集合对象

c# - 在没有看到 "Collection modified,enumeration cannot continue..."的情况下迭代集合的最佳方法

scala - 为什么 scala 的集合默认不是 'views'?

java - Java 集合排序

java - 如何在 Java 中创建一个包含其他数组数据的新数组?

java - Maven 找不到随 brew 安装的 Spark 库

java - 在 Java 中显示带前导零 (0) 的数字?

java - 如何在 Java Android Studio 中更改 EditText 的自动焦点?

java - Play框架和Java版本

java - 从内部列表 java 8 的对象列表中获取 ID 列表