現在、Javaは大規模な開発に使用されることが多いですが、なるべくシンプルで誰が見ても読みやすいプログラムを書くことが重要とされます。
そのようなときには「ラムダ式」が役立ちます。
「ラムダ式」を使うことにより、ひとまとまりの処理を記述できるようになり、コード量が減るため読みやすくすることができます。
しかし「ラムダ式」について、あまり聞き馴染みのない方も少なくないのではないでしょうか。
今回はその「ラムダ式」について詳しくご紹介します。もくじ
◆ラムダ式とは
2014年3月にリリースされたJava8の新たな表記法としてラムダ式が追加されました。
ラムダは「LAMBDA」と表記されます。
ラムダ式は関数を式として扱い変数に代入できるようにする際に使うことができ、メソッド定義を式として扱える点が特徴です。
ラムダ式の基本書式は以下の通りになります。
【書式】
(実装するメソッドの引数) -> {処理内容}
・2つの整数値を引数に取り、その和をメソッドに渡す場合の記述
(int x, int y) -> {return x + y;}
上記の例は以下のように省略することが可能です。
・引数の型宣言を省略
(x, y) -> {return x + y;}
上記の様に処理内容が1行の記述の場合には、戻り値の中かっこを省略すことができます。
・処理内容が1行の記述の場合の中かっこの省略
(x, y) -> return x + y;
短いコードで同じ内容を書くことが出来ました。
このように処理をシンプルに書く事が出来る様になります。
◆ラムダ式のメリット
ラムダ式を使用することによるメリットは、匿名クラスを用いた場合よりも関数型インターフェースを実装するのためのソースを簡潔にシンプルに書けること、Stream APIの引数としての関数型インターフェースを記述する際に適しているといった点があげられます。
ラムダ式を使うことで記述がシンプルになり、パフォーマンスの向上にもつながります。
◆ラムダ式書き換えの実例
ラムダ式を使用したサンプルコードをご紹介します。
【intの引数を1つ渡すインタフェースの例】
@FunctionalInterface public interface IntFunc { public abstract int func(int x); }
従来は以下のような記述になっていました。
IntFunc intFunc1 = new IntFunc(){ @Override public int func(int x){ return x+x; } }
これをラムダ式に書き換えると以下のような記述になります。
IntFunc intFunc2 = (int x) -› {return x+x;};
さらに以下のように型を省略することも可能です。
IntFunc intFunc3 = (x) -›{return x+x;};
このようにラムダ式を使用することによって簡単に短く処理を書くことが出来ます。
◆まとめ
Java8は従来通りのコーディングでも問題なく動作しますが、今では多くの人がラムダ式を利用しています。
他の人のプログラムが読めない事がないようにラムダ式を使えるようになっておく必要があるといえるでしょう。
また、Java8ではラムダ式以外にも様々な機能が追加されており、その中でも「Stream API」はラムダ式を前提としています。
プロジェクトによってラムダ式は必須というところもあります。
この機会にラムダ式について学び、ラムダ式に慣れておくようにしましょう。