public class Main {
static class Res implements AutoCloseable {
String n;
Res(String n) { this.n = n; System.out.print("open:" + n + " "); }
public void close() { System.out.print("close:" + n + " "); }
}
public static void main(String[] args) {
try (Res a = new Res("A"); Res b = new Res("B")) {
System.out.print("use ");
}
}
}
選択肢
- あなたの回答
- 正解
正解
B. open:A open:B use close:B close:A
詳細解説
リソースは宣言順(A→B)にオープンされ、クローズは逆順(B→A)に行われます。これはスタック的な後入れ先出しの順序です。
なぜ他の選択肢が違うのか
- クローズは宣言順ではなく逆順です。
- オープンは A から始まります。
- try-with-resources の構文として正当です。
罠ポイント
try-with-resources の逆順クローズはスタックと同じ原則です。例外が発生した場合も同様に逆順でクローズされます。