import java.lang.Exception; class C { static class MyResource implements AutoCloseable { @Override public void close() { } } void m1() throws Exception { MyResource r1; try (r1 = new MyResource()) { System.out.println(r1); } try (MyResource r2 = new MyResource()) { System.out.println(r2); } MyResource r3 = new MyResource(); try (MyResource r = r3) { System.out.println(r); } } void m2() throws Exception { MyResource r1 = null; try (r1 = new MyResource()) { System.out.println(r1); } try (MyResource r2 = new MyResource()) { r2 = null; // todo: check for NPE System.out.println(r2); } MyResource r3 = null; System.out.println(r3); try (r3 = new MyResource()) { } try (MyResource r4 = new MyResource()) { } try (MyResource r5 = new MyResource()) { System.out.println(r5); r5 = new MyResource(); } MyResource r6; try (MyResource r = r6) { System.out.println(r); } } }