C#のusingが、Java7でtry-with-resource statementとして実現
C#には、ファイルやDBのリソースのクローズを必ず行うためにusingステートメントという便利な機能があります。
void foo() { using (TextWriter w = File.CreateText("test.txt")) { w.WriteLine("ごにょごにょ"); } }
上記の例では、TextWriterオブジェクトは、usingのブロックが終了する時点で、自動的に閉じられます。(例外が発生しても閉じられます。)
最近Java(JDK6)に触る機会があったのですが、DBコネクションのクローズの際にこの機能がJavaにもあれば・・・と思う事が多々ありました。 ちょっと調べたところ、JDK7にはtry-with-resource statementという機能が追加されていて、C#のusingと同等のことができるようです。
void foo(Connection con) throws SQLException { String query = "select ..."; try (Statement stmt = con.createStatement()) { ResultSet rs = stmt.executeQuery(query); while (rs.next()) { .... } } catch (SQLException e) { JDBCTutorialUtilities.printSQLException(e); } }
Javaを扱うこと自体めっきり減りましたが、JDK7を利用する機会があれば、積極的に使いたい機能だと思います。