今回はラムダ式に関する問題を解き、その内部動作を深く理解していきましょう。
問題
次のプログラムを実行した場合の出力はどれでしょうか?正しい選択肢を選んでください。
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<Integer, String> func = x -> {
if (x % 2 == 0) return "Even";
else return "Odd";
};
System.out.println(func.apply(5));
}
}
選択肢
- A. Odd
- B. Even
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
A. Odd
解説
基本説明:
ラムダ式は、Java 8から導入された匿名関数(名前のない関数)です。この問題では、Function<Integer, String>
という関数型インターフェースを利用しています。関数型インターフェースは、たった1つの抽象メソッドを持つインターフェースです。
このFunction
インターフェースには、T
型を引数としてR
型を返すapply
メソッドが含まれています。
誤答理由:
初めての学習者が行う間違いとして、ラムダ式の使い方を誤解したり、Function
インターフェースの性質を誤解して「B. Even」や「C. コンパイルエラー」などを選択してしまうことがあります。
実際、ラムダ式に指定されたロジックがそのまま実行されるので、引数が5の場合はOdd
が出力されます。
つまずきポイント:
関数型インターフェースを理解することが重要です。特に、Function<T, R>
のapply
メソッドが何を期待しているのかを理解することが鍵と言えます。
ロジックで使用される条件チェックはシンプルですが、同時に強力です。
発展知識:
ラムダ式は、単一メソッドを持つ匿名クラスを簡略化して書く方法でもあります。このような書き方は、コードの可読性と簡潔性を向上させるために広く使われています。
他に、Consumer
やSupplier
など、異なる種類の関数型インターフェースも知識として持っておくと良いでしょう。