Kodrill

Java SE 17 Gold (1Z0-826-JPN) 試験 / 関数型インタフェースとラムダ式 ・ 無料問題 5/5

関数型インタフェースとラムダ式 問題5[関数型インタフェースの定義とインスタンス化]

次のコードを実行したときの出力を選んでください。

Main.java
@FunctionalInterfaceinterface Calc {    int apply(int a, int b);​    default Calc twice() {        return (a, b) -> apply(apply(a, b), b);    }​    static Calc plus() {        return (a, b) -> a + b;    }​    boolean equals(Object o);}​public class Main {    public static void main(String[] args) {        System.out.println(Calc.plus().twice().apply(3, 4));    }}

選択肢

  • A.11正解
  • B.14
  • C.7
  • D.抽象メソッドが2つあるため、コンパイルエラーになる

解説実行して確認済み

関数型インタフェースは抽象メソッドをちょうど1つ持つインタフェースです。default メソッドと static メソッドは数に入らず、equals のように Object の public メソッドと同じシグネチャの抽象メソッドも数に入りません。そのため Calc は関数型インタフェースです。plus() は足し算、twice() は apply(apply(3, 4), 4) = apply(7, 4) を計算するので 11 です。

この問題の答えは、試験の対象バージョンでコードを実際に実行して確かめています。確かめ方は運営者情報に書いています。

「関数型インタフェースとラムダ式」の要点を解説記事で読む

「関数型インタフェースとラムダ式」の無料問題

ここで公開しているのは無料範囲の問題です。無料登録すると、解答の記録・ダッシュボードでの復習ができ、 プレミアムならこの問題セットの全問題と本番形式の模擬試験も解けます。