Given:



IntStream stream = IntStream.of(1, 2, 3);
IntFunction<Integer> inFu = x -> y -> x * y; // line n1
IntStream newStream = stream.map(inFu.apply(10)); // line n2
newStream.forEach(System.out::print);

Which modification enables the code fragment to compile?

A. Replace line n1 with:

IntFunction<UnaryOperator> inFu = x -> y -> x * y;

B. Replace line n1 with:

IntFunction<IntUnaryOperator> inFu = x -> y -> x * y;

C. Replace line n1 with:

BiFunction<IntUnaryOperator> inFu = x -> y -> x * y;

D. Replace line n2 with:

IntStream newStream = stream.map(inFu.applyAsInt(10));

題解

這題原先的程式在line n1和line n2都會編譯錯誤,原因在於inFu變數的泛型型態不是IntUnaryOperator,line n1的Lambda語法回傳形態有誤,line n2的apply方法之傳入參數型態有誤。所以答案是選項B。