Экземпляр абстрактного класса, который реализует Iterator, не будет повторяться - PullRequest
0 голосов
/ 23 ноября 2018

Кажется, что когда у меня есть абстрактный класс, который реализует интерфейс, интерфейс не воспринимается основным классом, который расширяет мой абстрактный класс:

Когда я использую это:

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 голосов
/ 23 ноября 2018

Вы реализуете интерфейс Iterator, а не интерфейс Iterable.Если вы сделаете свой класс реализующим Iterable, вы сможете использовать расширенный синтаксис цикла for.

...