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?