Quando eseguo l'iterazione su una raccolta utilizzando il nuovo zucchero sintattico di Java 8, ad esempio
myStream.forEach(item -> {
// do something useful
});
Questo non equivale al frammento di "vecchia sintassi" qui sotto?
myStream.forEach(new Consumer<Item>() {
@Override
public void accept(Item item) {
// do something useful
}
});
Questo significa che un nuovo Consumer
oggetto anonimo viene creato sull'heap ogni volta che eseguo l'iterazione su una raccolta? Quanto spazio heap richiede? Quali sono le implicazioni sulle prestazioni? Significa che dovrei piuttosto usare il vecchio stile per i loop quando si scorre su grandi strutture dati multi-livello?