ラムダ式はJavaの関数型プログラミングの重要な要素です。今回の問題を解いて理解を深めましょう。
問題
次のプログラムを実行した場合の出力はどれでしょうか?正しい選択肢を選んでください。
import java.util.function.Function;
public class LambdaExample {
public static void main(String[] args) {
Function<Integer, String> converter = (Integer number) -> {
if (number > 10) {
return "Large Number";
} else {
return "Small Number";
}
};
System.out.println(converter.apply(15));
}
}
選択肢
- A. Large Number
- B. Small Number
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
A. Large Number
解説
解説のポイント:
- ラムダ式の基本構文
- Functional Interfaceの理解
Javaでラムダ式を使うためには、Functional Interface (関数型インタフェース) という、一つだけ抽象メソッドを持つインタフェースを使用します。
このプログラムでは、Function<Integer, String>
をインタフェースとして使用しています。Functionは、1つの入力(この場合はInteger)を取り、1つの出力(この場合はString)を返すメソッドを実装する関数型インタフェースです。
次にラムダ式が登場します。一般的な構文としては、引数の一覧の後に<→>でコードブロックを囲んで実装を記述します。
引数の型 (Integer) は省略可能です、なぜなら Function インターフェースから型推論が働くからです。
式内のconverter.apply(15)
はラムダ式を呼び出していて、変数number
に15を渡しています。
条件評価では「numberが10より大きいなら”Large Number”を返し、それ以外なら “Small Number”を返す」という指示があります。15は10より大きいので “Large Number” を返すことになり、このため選択肢Aが正解です。