Java8 のラムダ式: 匿名クラスの代替?
Java8 にラムダ式が導入されると、次のような疑問が生じます。クラスは廃止されますか?
ラムダ式: A簡潔な解決策
ラムダ式は、単一メソッドのインターフェイスを定義するためのコンパクトで読みやすい構文を提供します。コレクションの sort メソッドで例示されているように、ラムダ式では匿名の Comparator 実装が不要になります。
Collections.sort(personList, new Comparator<Person>() { public int compare(Person p1, Person p2){ return p1.firstName.compareTo(p2.firstName); } });
は次のようになります:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
When Lambda Expressions Fall Short
ラムダ式はその単純さにもかかわらず、制限があります。これらは単一メソッド インターフェイスでのみ使用でき、状態を提供したり、追加のメソッドを定義したりすることはできません。これは、匿名クラスが次のような状況で引き続き必要であることを意味します。
ラムダ式の利点
その範囲内で、ラムダ式には匿名クラスよりも優れた利点があります。
結論
ラムダ式は Java8 の匿名クラスに置き換わるものではありません。匿名クラスは単一メソッド関数の便利なショートカットを提供しますが、状態、継承、または追加のメソッドが必要な場合には匿名クラスが不可欠であることに変わりはありません。両方の機能が共存して、Java プログラミングのさまざまなシナリオに柔軟で適切なソリューションを提供します。
以上がJava 8 のラムダ式は匿名クラスを置き換えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。