实现Iterator的抽象类的实例不会进行迭代

时间:2018-11-23 15:50:47

标签: java foreach interface abstract-class iterable

当我有一个实现接口的抽象类时,似乎该接口没有被扩展我的抽象类的主类拾取:

使用此功能时:

public abstract class MusicIntCollection implements Iterator<Integer>{...}

我无法遍历StepIndexCollection的实例:

public class StepIndexCollection extends MusicIntCollection{...}

但是,当我创建它时:

public class StepIndexCollection extends MusicIntCollection implements Iterator<Integer>{...}

...我可以遍历StepIndexCollection的实例。

这是我要迭代的方式:

this.notes = new StepIndexCollection();
    for (int i : o.notes()) {
        this.notes.add(i);
    }

是否有一种方法可以使它在抽象类中起作用,因此扩展我的MusicIntCOllection的所有特定类类型也不必实现该接口?

1 个答案:

答案 0 :(得分:3)

您正在实现Iterator接口,而不是Iterable接口。如果使类实现Iterable,则可以使用增强的for循环语法。