MENU

【Java Silver】ラムダ式と機能的インターフェースの理解

今回はJavaのラムダ式についての問題に挑戦しましょう。

問題

次のプログラムを実行した場合の出力はどれでしょうか?適切な選択肢を選んでください。

import java.util.function.Consumer;

public class Main {
    public static void main(String[] args) {
        Consumer<String> printer = s -> System.out.println(s.toUpperCase());
        printer.accept("hello lambda");
    }
}

選択肢

  • A. hello lambda
  • B. Hello Lambda
  • C. HELLO LAMBDA
  • D. コンパイルエラー
  • E. 実行時エラー

答えと解説

回答を見る

答え

C. HELLO LAMBDA

解説

基本説明:

この問題はJavaのラムダ式を使ったプログラムで、文字列を入力して、大文字に変換して表示する機能を持っています。

ラムダ式は関数型インターフェースを実装するための簡潔な方法です。ここでは、Consumer<String>インターフェースを実装しています。

誤答理由とつまずきポイント:

Aの選択肢やBの選択肢がエラーとなる原因は、s.toUpperCase()によって文字列"hello lambda"がすべて大文字に変換されて返されることです。

このプログラムでは、単にSystem.out.println(s)ではなく、s.toUpperCase()を使用している点が重要で、ここで小文字が大文字に変換されています。

発展知識:

ラムダ式はJava 8で導入され、コードの簡略化に役立ちます。特に、匿名クラスを使わずに関数型インターフェースを実装できる点が大きな特徴です。

これは、実際の現場でも非常によく使われており、Javaプログラムの記述を簡潔にするための重要なツールとなります。

実際に仕事でも使われることが多いので、ぜひとも理解を深めてください。

目次