1Z0-826-JPN 対応
try-with-resources難易度 標準無料

次のコードの出力として正しいものを選べ。

 1  public class Q9 {
 2      static class Res implements AutoCloseable {
 3          String name;
 4          Res(String name) { this.name = name; System.out.println("open " + name); }
 5          public void close() { System.out.println("close " + name); }
 6      }
 7      public static void main(String[] args) {
 8          try (Res a = new Res("A"); Res b = new Res("B")) {
 9              System.out.println("body");
10          }
11      }
12  }
  1. Aopen A / open B / body / close A / close B
  2. Bopen A / open B / body / close B / close A
  3. Copen B / open A / body / close A / close B
  4. Dopen A / open B / close B / close A / body
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:B✓有資格者監修

解説

try-with-resources のリソースは宣言順に初期化され(open A → open B)、 try ブロック本体が実行された後(body)、宣言と逆順に close() される(close B → close A)。 JLS §14.20.3 で「リソースは宣言と逆順にクローズされる」と規定されている(後で開いたものを先に閉じる=スタック的解放)。
各誤答が違う理由
  • Aclose が宣言順(A→B)になっている誤り。実際は逆順(B→A)。
  • C初期化(open)も逆順だとした誤り。openは宣言順(A→B)。
  • Dbody より先に close するとした誤り。close は try 本体の完了後。
ひっかけ: open は宣言順・close は逆順。「初期化と解放で順序が逆になる」点。
実機確認の答え合わせ
出力:
open A
open B
body
close B
close A
✓有資格者(著者)による書き下ろし解説

有資格者(著者)が監修した問題は、すべて無料サンプルとして公開しています。買う前に、その全部を実際に解いて解説まで読めます。有料で追加される問題はAIが作成したもので、有資格者の監修は入っていません。

この問題集の作り方

  1. 問題と解説はAIが作成しています。有資格者(著者)が監修した問題は、無料サンプルとして公開している分だけです。有料で追加される問題に監修は入っていません。
  2. 各問に、公式ドキュメントの出典リンクを付けています。書いてあることは、出典に当たって確かめられます。
  3. 誤答の選択肢それぞれに、なぜ誤りなのかの理由を書いています。
  4. 解説に載せているコンパイル結果は、実際に javac を走らせた出力です。想定した挙動ではありません。
  5. 誤りを見つけたら報告できます。原則として無償で訂正・削除します。
  6. 各試験の運営団体とは無関係の非公式教材です。合格を保証するものではありません。
この分野をもっと解いて、得点源に
try-with-resources を含む問題を分野別に演習できます。
演習する →