参数化类型的Java迭代器

参数化类型的Java迭代器,java,arraylist,iterator,Java,Arraylist,Iterator,我正在尝试为ArrayList类型编写一个itertor,其中Number是一个类 我几乎可以做到,但我会出错: 这是类定义 public class History implements Iterable<ArrayList<Number>> { 公共类历史实现了Iterable{ 这是我希望迭代的类型的定义: private ArrayList<Number> spins = new ArrayList<Number>(); privat

我正在尝试为ArrayList类型编写一个itertor,其中Number是一个类

我几乎可以做到,但我会出错:

这是类定义

public class History implements Iterable<ArrayList<Number>> {
公共类历史实现了Iterable{
这是我希望迭代的类型的定义:

private ArrayList<Number> spins = new ArrayList<Number>();
private ArrayList spins=new ArrayList();
…下面是迭代器函数:

   @Override
    public Iterator<ArrayList<Number>> iterator() {
        Iterator<ArrayList<Number>> it = new Iterator<ArrayList<Number>>() {

            private int currentIndex = 0;

            @Override
            public boolean hasNext() {
                return currentIndex < gethistorySize() && spins.get(currentIndex) != null;
            }

            @Override
            public ArrayList<Number> next() {
                return spins.get(currentIndex++); // ** ERROR **
            }

            @Override
            public void remove() {
                throw new UnsupportedOperationException();
            }
        };
        return it;
    }
@覆盖
公共迭代器迭代器(){
迭代器it=新迭代器(){
私有int currentIndex=0;
@凌驾
公共布尔hasNext(){
返回currentIndex
我在标记为**error的行中得到一个错误**

我得到的错误是:

这条线上有多个标记 -表达式的类型必须是数组类型,但已解析为ArrayLisy -类型不匹配:无法从数字转换为ArrayList

我不太确定该在这里归还什么

有人能帮忙吗


Thx

为了使
自旋.get(currentIndex++)
返回
数组列表
自旋的类型必须是
列表
,而不是
数组列表

如果
旋转的类型是正确的,那么您可能需要实现一个
迭代器
,而不是
迭代器
(并且
历史
应该实现
Iterable
)。

更改

        @Override
        public ArrayList<Number> next() {
            return spins.get(currentIndex++); // ** ERROR **
        }
返回类型错误,因此出现编译错误。
当您调用
next()时
method,您想在这一行迭代一个
ArrayList

多个标记中的每个数字对象-表达式类型必须是数组类型,但它解决了ArrayList类型不匹配:无法从数字转换到ArrayList您能添加错误消息吗?这样有相同问题的人就能够找到您的问题和po可能的答案?如上所述,抱歉-并且,请注意,这不是一个运行时错误,而是一个“屏幕错误”,因此无法向您解释-我将尝试这些建议-仅供参考-删除原始错误,但给出一个(类似)更改后的文件上出现错误line@Graham请尝试以下示例:非常感谢-更改类型以解决此问题。
        @Override
        public Number next() {
            return spins.get(currentIndex++); // ** ERROR **
        }