Почему Stream <T> не реализует Iterable <T>?

В Java 8 у нас есть классПоток <Т>, что любопытно есть метод

Iterator iterator()

Таким образом, вы ожидаете, что он реализует интерфейсIterable <Т>, который требует именно этот метод, но этодело не в этом.

Когда я хочу перебрать поток через цикл foreach, я должен сделать что-то вроде

public static Iterable getIterable(Stream s) {
    return new Iterable {
        @Override
        public Iterator iterator() {
            return s.iterator();
        }
    };
}

for (T element : getIterable(s)) { ... }

Я что-то здесь упускаю?

Ответы на вопрос(9)

Ваш ответ на вопрос