Задать вопрос
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];
            }
        };
    }
  • Вопрос задан
  • 132 просмотра
Подписаться 2 Простой 4 комментария
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Он понимает Iterable не как массив, а как нечто, по чему можно итерироваться. Как бы перечислять, что есть внутри. Для этого возвращается Iterator.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы