我想迭代一個(gè)實(shí)現(xiàn) Collection 的對(duì)象。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 添加了兩個(gè)對(duì)象。A a = new A();B b = new B();B b1 = new B();a.add(b);a.add(b1);我想使用 foreach 遍歷 A 中的所有 B。我使用了迭代器并且它有效,但我特別想使用 foreach 或增強(qiáng)的 for 循環(huán),例如:a.foreach(eachB -> { eachB.getSomeValueFromGetterMethodInB(); })但是,它向我拋出錯(cuò)誤“他的方法 getSomeValueFromGetterMethodInB() 對(duì)于類型 Object 是未定義的”。我在這里缺少一些基本概念嗎?我不能迭代 Collection 實(shí)現(xiàn)是 foreach 的局限之一嗎?任何建議將不勝感激?謝謝
1 回答

吃雞游戲
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您必須Collection
使用它將包含的特定類型的對(duì)象聲明:
private final Collection<B> p = new ArrayList<>();
并且,指出您用于實(shí)施的類型Collection
:
class A implements Collection<B>
..這也需要調(diào)整方法add()
:
public boolean add(B e) { return p.add(e); }
添加回答
舉報(bào)
0/150
提交
取消