title: Why is declaration required in Java's try-with-resource
body: <p>Java7's try-with-resources is great and all, but I can't wrap my head around why it is required to include the declaration of the resource in the <code>try</code> statement. My gut says the following should be possible:</p>
  
  <pre><code>CloseableResource thing;
  try (thing = methodThatCreatesAThingAndDoesSomeSideEffect()) {
      // do some interesting things
  }
  thing.collectSomeStats();
  </code></pre>
  
  <p>Alas, this results in a syntax error (cryptically expecting a <code>;</code>). Moving the type definition/declaration into the <code>try</code> statement works, which of course moves thing into the corresponding scope. I can figure out how to work around this when I want more from my <code>AutoClosable</code> than getting closed, I'm interested in <em>why</em> the compiler requires it like this.</p>