Java8で導入された機能に「ラムダ式」があります。
ラムダ式
【 ラムダ式の基本構文 】
( 引数 ) -> { 処理 } |
ラムダ式を使用すると、関数型インタフェースの実装を簡潔に記述することができます。
関数型インタフェースとは、抽象メソッドを1つだけ含むインタフェースのことです。
例えば、並行処理を行う際に利用するRunnableインタフェースも関数型インタフェースと言えます。
【 Runnableインタフェースの定義 】
1 2 3 |
public interface Runnable { public abstract void run(); } |
Runnableインタフェースを匿名クラスを使用して実装した場合、以下のような記述となります。
1 2 3 4 5 6 |
Runnable r = new Runnable() { @Override public void run() { /* 処理 */ } }; |
ラムダ式を使用して実装すると、以下のように簡潔に記述できます。
1 |
Runnable r = () -> { /* 処理 */ }; |
ラムダ式の省略記法
ラムダ式には、さまざまな省略した記述法があります。
IntToLongFunctionインタフェースを例にして見ていきましょう。
1 |
IntToLongFunction func = (int x) -> { /* 処理 */ }; |
1. 引数のデータ型を省略できる
1 |
IntToLongFunction func = (x) -> { /* 処理 */ }; |
2. 引数が1つの場合は小括弧()を省略できる
1 |
IntToLongFunction func = x -> { /* 処理 */ }; |
3. 処理が1つの文の場合は中括弧{}を省略できる
この場合、戻り値がある・なしに関わらずreturn文は不要
1 |
IntToLongFunction func = x -> /* 1つの文の処理 */; |
慣れるまでは不思議な記述法にしか見えませんが、簡潔に記述できるとプログラムの可読性も向上します。ぜひ、この機会に書き方を覚えてくださいね。