Avant Java 8, la fonctionnalité lambda pouvait être obtenue en utilisant des classes internes anonymes. Par exemple:
interface Lambda {
void doStuff();
}
// ...
public void doWithCallback(Lambda callback) {
// ...
callback.doStuff();
}
// ...
doWithCallback(new Lambda {
public void doStuff() {
// ...
}
});
En termes de performances, y a-t-il une différence entre continuer à utiliser cette approche et utiliser les nouveaux Java 8 lambdas?
Oracle a publié une étude comparant les performances entre Lambdas et les classes anonymes
Voir JDK 8: Lambda Performance Study par Sergey Kuksenko, qui fait 74 diapositives.
Résumé: lent à s'échauffer mais lorsque JIT s'aligne, le pire des cas est aussi rapide que la classe anonyme mais peut être plus rapide.