java - 使用 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 的限制之一吗?任何建议将不胜感激?谢谢
解决方案
您必须Collection
使用它将包含的特定类型的对象声明:
private final Collection<B> p = new ArrayList<>();
此外,请指明您用于实现的类型Collection
:
class A implements Collection<B>
..这也需要调整add()
方法:
public boolean add(B e) {
return p.add(e);
}
推荐阅读
- reactjs - React:如何使用 getDerivedStateFromProps() 设置组件状态。它会干扰使用相同状态变量的受控组件
- c# - .net core(controllerBase)中初始化方法(apiController)的替代方法是什么
- java - 创建一个带有 3 个单选按钮和一个提交按钮的基本框架
- c - 指针中的分段错误
- android - 安卓。将文件保存到设备上的共享目录中
- sas - 在 SAS 中生成新变量会导致错误 180-322
- python-3.x - 无法启动 docker `OSError: [Errno 8] Exec format error: '/usr/local/bin/docker-credential-ecr-login'`
- javascript - 将汉堡菜单移动到右侧 react-burger-menu
- kubernetes - 找不到服务“istio-sidecar-injector”
- python - 从数据框列中的字符串中删除 numpy 数组中存在的特定单词?[Python]