Kodrill

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

関数型インタフェースとラムダ式 問題3[内部クラス (内部クラス, static な内部クラス, 無名クラス) の使用]

次のコードをコンパイルした結果として正しいものを選んでください。

Main.java
public class Main {    public static void main(String[] args) {        int base = 10;        Runnable r = new Runnable() {            public void run() {                System.out.println(base + 1);            }        };        base = 20;        r.run();    }}

選択肢

  • A.コンパイルに成功し、11 と出力される
  • B.コンパイルに成功し、21 と出力される
  • C.6行目でコンパイルエラーになる正解
  • D.9行目でコンパイルエラーになる

解説

無名クラスやラムダ式から参照できるローカル変数は、final か実質的に final (一度も再代入されない) なものに限られます。9行目で base に再代入しているので base は実質的に final でなくなり、それを参照している6行目がコンパイルエラーになります。代入している9行目ではなく、参照している側でエラーが報告される点に注意しましょう。

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

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