日々の記録。

プログラミングのメモや感じた事などを記録。

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を利用する機会があれば、積極的に使いたい機能だと思います。