NeToster
@NeToster

Почему foreach может принимать экземпляр класса в котором есть метод iterator?

Как я понимаю foreach понимает интерфейс Iterable как массив, но почему нам нужен лишь экземпляр класса?
for (String j: new Iterabled()) {
            System.out.println(j);
        }

class Iterabled extends Pets implements Iterable<String>{

    public int size(){
        return names.length;
    }

    @Override
    public Iterator<String> iterator(){
        return new Iterator<String>() {
            private int index = 0;
            @Override
            public boolean hasNext() {
                return index < size();
            }
            @Override
            public String next() {
                index = index + 1;
                return names[index];
            }
        };
    }
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Он понимает Iterable не как массив, а как нечто, по чему можно итерироваться. Как бы перечислять, что есть внутри. Для этого возвращается Iterator.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы