ラムダ式の概要

Java8で追加された新機能の中でも注目されているのがラムダ式です。

いままでのJavaに無い新たなプログラムの表記方法になります。

別名はクロージャ(Closure)とも呼ばれています。

ラムダ式は関数型インターフェイスのメソッドを実装する時に利用する

ことができます。

Java8以前では、インターフェースの実装で、匿名インナークラスを使う

場合は、オーバーライドの記述を書いたりなどコーディングする行が増え

てしまい、ソースコードが読みづらくなったりしていました。

実際に匿名インナークラスを使った例とラムダ式を使った例をサンプルで

見てみましょう。

匿名インタークラスの例

Threadを使った例を取り上げます。Runnableインターフェースを実装した

クラスを作成して実行するサンプルプログラムです。

public class Innter01 {
  public static void main(String[] args) {
    Runnable r = new Runnable() {
      @Override
      public void run() {
        try {
          for (int i = 0; i < 10; i++) {
            Thread.sleep(1000);
            System.out.println("wait");
          }
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    };
    r.run();
  }
}

Java8以前では、このようにrunメソッドをオーバーライドするためのコードを書いていました。

では、ラムダ式を使った例をみましょう。

ラムダ式

ラムダ式の記述は次のように記述します。

(実装するメソッドの引数) -> {処理}

ラムダ式を使えるの関数型インターフェース(実装するメソッドが1つだけ定義されている

インターフェイス)に対して使うことができます。

先ほどのサンプルをラムダ式を使って書き換えると以下のようになります。

public class Innter01 {
  public static void main(String[] args) {
    Runnable r = () -> {
      try {
        for (int i = 0; i < 10; i++) {
          Thread.sleep(1000);
          System.out.println("wait");
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    };
    r.run();
  }
}

オーバーライドするための構文がなくなり随分シンプルになりました。