■概要
ラムダ式と関数型インターフェースはセットで使用される。
関数型インターフェースに関しては、自由に定義可能である。
今回は、ラムダ式の基本的な書き方と`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();
・結果
実行中...
コメント