このJavaコードは、ラムダ式を使用しています。ラムダ式は、関数的インターフェイスを簡潔に記述するための構文です。関数的インターフェイスとは、抽象メソッドを1つだけ持つインターフェイスのことを指します。
このコードにおけるラムダ式 (str) -> { return Integer.parseInt(str); }
は、String
を引数にとり、それを Integer
に変換する処理を定義しています。このようなインターフェイスは java.util.function
パッケージにある Function<T,R>
に該当します。ここで、T
は入力の型(この場合は String
)、R
は結果の型(この場合は Integer
)です。
選択肢を見ると、以下の関数的インターフェイスが考えられます:
-
Consumer<T>
: 引数を1つ受け取り、値を返さない(消費するだけ)。 -
Function<T,R>
: 引数を1つ受け取り、何らかの値を返す。 -
Supplier<T>
: 引数を受け取らず、値を供給する。 -
Predicate<T>
: 引数を1つ受け取り、booleanを返す。
ラムダ式が String
を受け取り、Integer
を返しているので、これは Function<T,R>
インターフェイスの定義に一致します。したがって、空欄には Function
が正しい答えとなります。
それでは、コードにコメントを加えて説明します。
import java.util.function.*; // java.util.functionパッケージをインポート public class Main { public static void main(String[] args) { // Functionインターフェースの宣言。Stringを受け取り、Integerに変換する。 Function<String, Integer> func = (str) -> { return Integer.parseInt(str); // StringをIntegerに変換する }; // Functionインターフェースのapplyメソッドを呼び出し、"100"をIntegerに変換してから2倍する System.out.println(func.apply("100") * 2); }
}
上記のコメントアウトは、コードの各部分が何をしているのかを説明するために加えました。Function
インターフェースは apply
メソッドを持っており、これは一つの引数を受け取って処理を行い、結果を返します。この例では、apply
メソッドが "100"
という String
を受け取り、Integer.parseInt
メソッドを使って Integer
に変換し、それを2倍にしています。この処理は関数的インターフェイス Function
の特性に完全に一致するため、答えはB(Function)です。
Discover more from Coursity
Subscribe to get the latest posts sent to your email.