Dlaczego Stream <T> nie implementuje Iterable <T>?

W Javie 8 mamy klasęStrumień <T>, które ciekawie mają metodę

Iterator<T> iterator()

Można więc oczekiwać, że zaimplementuje interfejsIterable <T>, co wymaga dokładnie tej metody, ale tak nie jest.

Kiedy chcę iterować po strumieniu używając pętli foreach, muszę zrobić coś takiego

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

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

Czy coś mi umyka?

questionAnswers(9)

yourAnswerToTheQuestion