■概要
ラムダ式と関数型インターフェースはセットで使用される。
関数型インターフェースに関しては、自由に定義可能である。
今回は、ラムダ式の基本的な書き方と`java.util.function`パッケージ内の頻繁に使用される、関数型インターフェース5つを記す。
■ラムダ式の基本的な書き方
ラムダ式の宣言構文は以下の通り。
関数型インターフェースの型 変数名 = ( 引数 ) -> ( 処理 );引数の括弧「( )」について、引数が1つの時だけ省略可能。
処理について、1つあるいは複数書きたい場合は、中括弧「{ }」をつける、つけないで、以下の制約に基づいて実装する。
| 中括弧あり | 中括弧なし |
|---|---|
| 複数の処理を記述可能 | 1つのみ処理を記述可能 |
| 戻り値を戻すにはreturnが必要 | 戻り値を戻すにはreturnが不要(省略) |
■関数型インターフェース
Javaのラムダ式と一緒によく使う主要な関数型インタフェースは以下の通り
| インターフェース | 引数 | 戻り値 | 用途 |
|---|---|---|---|
| Function<T, R> | T | R | Tを受け取ってRを返す処理 |
| Cunsumer<T> | T | なし | Tを受け取って処理をする |
| Supplier<T> | なし | T | 値を返すだけの処理 |
| Predicate<T> | T | boolean | 条件判定(true/false) |
| Runnable | なし | なし | 何も受け取らず処理する |
■サンプルコードと実行結果
以下、Javaのラムダ式と一緒によく使う主要な関数型インタフェースの使用例を示す。
▼Function<T, R>
・コード
// 引数あり、戻り値あり
Function<Integer, Integer> square = x -> x * x;
System.out.println(square.apply(5));・結果
25▼Cunsumer<T>
・コード
// 引数あり、戻り値なし
Consumer<String> printer = message -> System.out.println("メッセージ: " + message);
printer.accept("こんにちは");・結果
メッセージ: こんにちは▼Supplier<T>
・コード
// 引数なし、戻り値あり
Supplier<Double> randomSupplier = () -> Math.random();
System.out.println(randomSupplier.get());・結果
0.9404979639286173▼Predicate<T>
・コード
// 引数あり、戻り値Boolean
Predicate<Integer> judgement = num -> {
int result = num + 3;
return result == 9;
};
System.out.println(judgement.test(6));・結果
true▼Runnable
・コード
// 引数なし、戻り値なし
Runnable task = () -> System.out.println("実行中...");
task.run();・結果
実行中...


コメント