Задать вопрос
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.
Ответ написан
Комментировать