1
0

More than 1 year has passed since last update.

Javaのラムダ式とは?

Last updated at Posted at 2022-03-13

メソッド参照/ラムダ式

Java8では、メソッドも型の一種だそうです。メソッドそのものもまた、他の数値型や文字列型と同じく、別のメソッドの引数として渡すことができます。そして、メソッドを受け渡しするための構文が、メソッド参照であり、ラムダ式です。

ラムダ式の基本

Main.java

package com.company;

public class Main {
    public static void main(String[] args) {
       var data = new String[] { "春はあけぼの", "夏は夜", "秋は夕暮れ" };
       var ml = new MethodLambda();
       ml.walkArray(data, (String value) -> {
           System.out.printf("[%s]\n", value); // Macでは\nと書かないと改行されない!、Windowsは¥n
       });
    }
}

MethodLambda.java

package com.company;

import java.util.function.Consumer;

public class MethodLambda {
    public void walkArray(String[] data, Consumer<String> output) {
        for (var value : data) {
            output.accept(value);
        }
    }
}

実行結果

[春はあけぼの]
[夏は夜]
[秋は夕暮れ]

メソッド参照/ラムダ式を利用しない例

Main.java

package com.company;

public class Main {
    public static void main(String[] args) {
       var data = new String[] { "春はあけぼの", "夏は夜", "秋は夕暮れ" };
       var ml = new MethodLambda();
       ml.walkArray(data);
    }
}

MethodLambda.java

package com.company;

public class MethodLambda {
    public void walkArray(String[] data) {
        System.out.printf("ラムダ式を利用しない例\n");
        for (var value : data) {
            System.out.printf("[%s]\n", value);
        }
    }
}

実行結果

ラムダ式を利用しない例
[春はあけぼの]
[夏は夜]
[秋は夕暮れ]

ラムダ式を表すのは、以下の構文です。引数リストと本体ブロックを「->」でつなぎます。

(引数型 仮引数) -> {
  ...メソッドの本体...
}

ラムダ式によって名前がなくなっただけでなく、walkArrayメソッドを呼び出すためのコードに、メソッド定義を直接埋め込めるようになります(これが「名前が不要で、その機能だけが必要な場合といった意味です。)これによって、コードが短くなったのはもちろん、コードのまとまりがはっきりしたため、格段に読みやすくなりました。

walkArrayメソッドの引数型として指定されているConsumaerインターフェイスは、標準ライブラリ(java.util.functionパッケージ)で提供されている関数型インターフェイスです。

@FunctonInterface
public interFace Consumer<T> {
  void accept(T t);
}

Tは、ジェネリクスの型パラメーターです。Consumaerであれば、T型の引数を受け取り、なんらかの処理を実行する(戻り値はない)メソッド型を表します。

最後に

Stream APIというものでは、ラムダ式の利用を前提としているので、必要なスキルです。ラムダ式を覚えれば従来のコードをシンプルにできるので、今後はこれを習得しないと人の書いたソースコードも読めないのだろうと思う...

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0