超いまさらですが、JDK7で導入されたtry-with-resources文のclose順序です。
public class TryWithResources { public static void main(String[] args) { try (Resource r1 = new Resource("Resouce 1"); Resource r2 = new Resource("Resouce 2");) { // なにもしない } catch (Exception e) { // なにもしない } finally { System.out.println("finally"); } } static class Resource implements AutoCloseable { private String name; public Resource(String name) { this.name = name; System.out.println(this.name + " is created."); } @Override public void close() throws Exception { System.out.println(this.name + " is closed"); } } }
Resouce 1 is created. Resouce 2 is created. Resouce 2 is closed Resouce 1 is closed finally
リソースは、作成した順序の逆順でクローズされます。finally 句は、クローズのあとに実行されます。