Когда я перебираю коллекцию с использованием нового синтаксического сахара Java 8, например
myStream.forEach(item -> {
// do something useful
});
Разве это не эквивалентно фрагменту "старого синтаксиса" ниже?
myStream.forEach(new Consumer<Item>() {
@Override
public void accept(Item item) {
// do something useful
}
});
Означает ли это, что новый анонимный объект Consumer
создается в куче каждый раз, когда я перебираю коллекцию? Сколько занимает куча пространства? Какие последствия у него есть? Означает ли это, что я должен использовать старый стиль для циклов при итерации над большими многоуровневыми структурами данных?