Почему 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)) { ... }
Я что-то здесь упускаю?