TL; DR:それはだが、主にシンタックスシュガーが、そのよりよいの構文は中括弧と括弧の無限の、判読できない行で終了するために使用することを実用的なものをたくさん作ります。
ラムダはJavaよりもずっと古いので、実際には逆です。単一のメソッドを持つ匿名の内部クラスは、(最も)Javaがラムダに近づいたものです。これはしばらくの間は「十分」だった近似値ですが、非常に厄介な構文を持っています。
表面的には、Java 8のラムダは構文上の砂糖以上のものではないように見えますが、表面の下を見ると、多くの興味深い抽象化が見られます。たとえば、JVM仕様はラムダを「true」オブジェクトとはまったく異なる方法で処理し、オブジェクトをオブジェクトのように扱うことができますが、JVMはそれらを実装する必要はありません。
しかし、その技術的なトリックはすべて興味深いものであり(JVMで将来の最適化が可能になるためです!)、本当の利点は構文糖の部分だけです。
読みやすいもの:
myCollection.map(new Mapper<String,String>() {
public String map(String input) {
return new StringBuilder(input).reverse().toString();
}
});
または:
myCollection.map(element -> new StringBuilder(element).reverse().toString());
または(ラムダの代わりにメソッドハンドルを使用):
myCollection.map(String::toUpperCase);
これまで5行のコード(うち3行はまったくつまらない)だった簡潔な方法で最終的に表現できるという事実は、実際的な(実際の可能性ではなく)現実の変化をもたらします。