匿名クラスからラムダ式とメソッド参照へ
単一メソッドの匿名クラスを簡潔なラムダ式とメソッド参照に置き換える。
コード比較
✕ Anonymous class
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
save(event);
}
});
✓ Java 8+
button.addActionListener(this::save);
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
少ない定型コード
クラス宣言とオーバーライドに伴う定型コードを削減できます。
優れた可読性
実行する操作に注意を集中できます。
引き続き型安全
コンパイラーが対象となる関数型インターフェースのシグネチャを検査します。
旧来のアプローチ
匿名クラス
モダンなアプローチ
メソッド参照
JDKバージョン
8
難易度
初級
JDKサポート
匿名クラスからラムダ式とメソッド参照へ
利用可能
JDK 8(2014年3月)以降、利用可能
仕組み
関数型インターフェースはラムダ式またはメソッド参照で実装できます。静的型付けと同じコールバック契約を維持しながら、匿名クラスに伴う定型コードを削減できます。
関連ドキュメント
証明