我正在为 ArrayList 创建一个 ShapeList 类,然后我想将此列表传递给 ShapeDrawer 类(我在 ShapeList 构造函数中实例化),以便它可以在 ShapeDrawer 类中迭代。现在,在 ShapeDrawer 类构造函数中,预期的类型应该是 List 还是 ShapeList?如果我输入 List,那么我不能使用 ShapeList 方法,如果我让它输入 ShapeList,那么 Eclipse 会说将 ShapeDrawer 构造函数更改为 List...我也想将此列表传递给其他类,但有同样的问题. 非常感谢您的帮助!!public class ShapeList implements Iterator{ List<ShapeConfigPair> shapeList = new ArrayList<>(); public ShapeList(PaintCanvas canvas, ShapeConfigPair activeShape) { // ... ShapeDrawer shapeDrawer = new ShapeDrawer(canvas, shapeList); }}
3 回答
![?](http://img1.sycdn.imooc.com/5458620000018a2602200220-100-100.jpg)
慕无忌1623718
TA贡献1744条经验 获得超4个赞
我认为您没有理解implements Iterator
您的类声明中的含义,并且不清楚您的问题究竟是什么。
造成混淆的一个原因是您定义了一个类ShapeList
,它有一个名为 的实例变量,shapeList
但它的类型是ArrayList
。您将 ArrayList 传递给的构造函数,ShapeDrawer
但听起来您希望在 ShapeDrawer 中执行的操作是调用包含ArrayList的ShapeList
对象的方法。因此,与其传递 ArrayList,不如传递.this
![?](http://img1.sycdn.imooc.com/54584c910001b8d902200220-100-100.jpg)
九州编程
TA贡献1785条经验 获得超4个赞
您的课程应该扩展AbstractList<ShapeConfigPair>
. 这很容易,因为没有很多事情要做。然后你可以把它作为一个 List 传递,没有问题。
Iterator 不是设计为保存数据的主类,而是用作临时适配器来遍历集合。
添加回答
举报
0/150
提交
取消