Gdy iteruję kolekcję przy użyciu nowego cukru syntaktycznego Java 8, takiego jak
myStream.forEach(item -> {
// do something useful
});
Czy nie jest to równoważne z fragmentem „starej składni” poniżej?
myStream.forEach(new Consumer<Item>() {
@Override
public void accept(Item item) {
// do something useful
}
});
Czy to oznacza, że Consumer
za każdym razem, gdy iteruję kolekcję, tworzony jest nowy anonimowy obiekt? Ile miejsca to zajmuje? Jakie ma to wpływ na wydajność? Czy to oznacza, że powinienem raczej używać starego stylu dla pętli podczas iteracji w dużych wielopoziomowych strukturach danych?