猿问

将列表传递给另一个类进行迭代的最佳方法是什么

我正在为 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);

    }

}


心有法竹
浏览 157回答 3
3回答

慕无忌1623718

我认为您没有理解implements Iterator您的类声明中的含义,并且不清楚您的问题究竟是什么。造成混淆的一个原因是您定义了一个类ShapeList,它有一个名为 的实例变量,shapeList但它的类型是ArrayList。您将 ArrayList 传递给的构造函数,ShapeDrawer但听起来您希望在 ShapeDrawer 中执行的操作是调用包含ArrayList的ShapeList对象的方法。因此,与其传递 ArrayList,不如传递.this

aluckdog

该ShapeDrawer构造应该是名单

九州编程

您的课程应该扩展AbstractList<ShapeConfigPair>.&nbsp;这很容易,因为没有很多事情要做。然后你可以把它作为一个 List 传递,没有问题。Iterator 不是设计为保存数据的主类,而是用作临时适配器来遍历集合。
随时随地看视频慕课网APP

相关分类

Java
我要回答