try-with-resourcesによる自動でのリソース解放
Java7ではtry-with-resourcesでCloseableインターフェースを実装したオブジェクトを利用する際に、リソースを自動で開放することが可能となったみたいです。
つまりこれまでfinally句内で記述していたclose処理を記述する必要がないということです。
どんな感じかというと、
try (BufferedReader reader = new BufferedReader(new FileReader(new File("input.txt")))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); }
かなりシンプルでいい感じですね。これまでならば、常にfinally句でリソースの開放を行うコードを記述する必要がありましたが、このtry-with-resourcesは例外の発生に関係なく自動で開放してくれるみたいです。
また、複数のリソースを扱う場合は以下のように記述するようです。
try (BufferedReader reader = new BufferedReader(new FileReader(new File("input.txt"))); BufferedWriter writer = new BufferedWriter(new FileWriter(new File("output.txt")))) { String line; while ((line = reader.readLine()) != null) { writer.write(line + "\n"); } } catch (IOException e) { e.printStackTrace(); }
便利ですね〜。コードがシンプルに保てて可読性が上がるのはとてもいいことだと思います。
ちなみに、Java7はJDBC4.1に対応していますが、このtry-with-resourcesを利用すればJDBCのリソースの開放も自動で行うことが可能です。