はじめに
ラムダ式とは、java8から追加されたプログラムの記述方式のことです。その中でよくわからない部分が少しあったので自分なりに解釈してみました。
まず最初に、この手の記事を調べるときに出てくるワード「匿名クラス」「関数型インターフェース」について説明し、そのあとラムダ式の説明をします。
匿名クラスとは
インターフェースの実装をせずに「クラス宣言」「インスタンス生成」を行える便利なものだと解釈します。通常はインタフェースの実装を行い、メソッドを呼び出すコードを書くので、通常と比べるとはるかに楽ですが、可読性が少し下がるような気がします。
関数型インターフェースとは
抽象メソッドを1つだけもつインターフェースのことを指します。メソッドをインターフェースのような扱いができるので便利です。
ラムダ式とは
関数型インターフェースを実装したインスタンスを生成する式と言え、匿名クラスを使用するより可読性が高いものになります。イメージでいうと下記の形になります。
インターフェース 変数 = (引数) -> {処理}
ラムダ式の例
上記の匿名クラスや関数型インターフェースを用いて通常の方法からラムダ式を使うまでの例をコードで確認します。
共通準備
Printer.java
@FunctionalInterface
public interface Printer {
void print();
}
IconPrinter.java
public class IconPrinter implements Printer{
@Override
public void print() {
System.out.println("アイコンを印刷");
}
}
通常の場合
public class Main {
public static void main(String[] args) {
IconPrinter iconPrinter = new IconPrinter();
iconPrinter.print();
}
}
匿名クラスを使用した場合
public class Main {
public static void main(String[] args) {
Printer printer = new Printer() {
//メソッドをオーバーライド
@Override
public void print(){
System.out.println("内容を印刷");
}
};
printer.print();
}
}
ラムダ式を使用した場合
public class Main {
public static void main(String[] args) {
Printer printer = () -> {
System.out.println("内容を印刷");
};
printer.print();
}
}
メソッド参照
ラムダ式を使用せずにすでに定義済みのメソッドを、引数なしで呼び出せるのがメソッド参照です。ラムダ式より短くかけるので便利です。イメージでいうと下記の形になります。
クラス名::メソッド名
最後に
何が言いたいかというとラムダ式最高!皆さん使いましょう