Lorsque j'itère une collection en utilisant le nouveau sucre syntaxique de Java 8, tel que
myStream.forEach(item -> {
  // do something useful
});N'est-ce pas équivalent à l'extrait de code «ancienne syntaxe» ci-dessous?
myStream.forEach(new Consumer<Item>() {
  @Override
  public void accept(Item item) {
    // do something useful
  }
});Cela signifie-t-il qu'un nouvel Consumerobjet anonyme est créé sur le tas chaque fois que j'itère sur une collection? Combien d'espace de tas cela prend-il? Quelles implications en termes de performances cela a-t-il? Cela signifie-t-il que je devrais plutôt utiliser l'ancien style pour les boucles lors de l'itération sur de grandes structures de données à plusieurs niveaux?