Java 8の前に、ラムダ機能は匿名の内部クラスを使用することで実現できます。例えば:
interface Lambda {
void doStuff();
}
// ...
public void doWithCallback(Lambda callback) {
// ...
callback.doStuff();
}
// ...
doWithCallback(new Lambda {
public void doStuff() {
// ...
}
});
パフォーマンスの観点から、このアプローチの使用と新しいJava 8ラムダの使用との間に違いはありますか?
オラクルは、ラムダと匿名クラスのパフォーマンスを比較した調査を投稿しました
JDK 8:Lambda Performance Study を参照してください。長さ74枚のスライドがあります。
要約:ウォームアップには時間がかかりますが、JITをインライン化すると、最悪の場合は匿名クラスと同じくらい速くなりますが、速くなる可能性があります。