MENU

【Java Silver 試験】ラムダ式【学習内容の理解】

今日もJava Silver試験に向けて、一緒に練習問題を解いていきましょう。

問題

次のJavaプログラムが正しく動作するためには、どの選択肢が必要でしょうか?

import java.util.function.Function;

    public class LambdaExample {
        public static void main(String[] args) {
            Function<String, Integer> func = str -> // ここにコードを追加;
            System.out.println(func.apply("123"));
        }
    }

選択肢

  • A. Integer.valueOf(str)
  • B. Integer.parseInt(str)
  • C. str.length()
  • D. str.compareTo("100")

答えと解説

回答を見る

答え

B. Integer.parseInt(str)

解説

基本説明:

ラムダ式はJava 8で導入された、新たなメソッド定義の方法です。Function<T, R>インタフェースは、入力を受け取り、結果を返す関数を表現します。

今回使用するラムダ式はFunction<String, Integer>型で、文字列を整数に変換することを目的としています。

このため、Integer.parseInt(str)を使うと、文字列が整数にパース(解析)され、期待する処理が行われることになります。

誤答理由:

他の選択肢A、C、Dは文字列を整数に変換する方法としては不適切です。

A. Integer.valueOf(str)は実際には文字列を変換できますが、parseIntがより適切です。

CとDは別の処理に用います。例えば、str.length()は文字列の長さを返し、str.compareTo("100")は文字列の比較になります。

つまずきポイント:

ラムダ式やメソッド参照に不慣れな場合、何をreturnすべきか迷うことがあります。

Functionインタフェースは2つの型パラメータを受け取りますが、時にそれが混乱の元になってしまいます。

「このメソッドは何をするのか?」をまず考え、それに対応するメソッドや実装形式を選択することが重要です。

発展知識:

Javaのラムダ式は、インタフェースが持つ1つの抽象メソッドを実装するために使用されます。

代表的な拡張にPredicateConsumerSupplierなどがあります。

ラムダ式を定義することで、これらの機能に対してオンザフライで実装を行うことができ、コードの可読性や短縮化に寄与します。

目次