2012年2月20日月曜日

[Java7][新機能]try-with-resources

Java7の新機能の一つ、try-with-resourcesのご紹介です。


例えば、Socketクラス等を使う場合はtry-catch内でリソースを使って
finally句でcloseをする必要があるんですが、このcloseメソッドが大抵
IOException等を投げてきてくれるんで、finally句で更なるtry-catch
ネストをしていく事になります。

 Socket hoge = null;
  try {
    hoge = new Socket();
    System.out.println(hoge);
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    try {
      hoge.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

これが、Java7try-with-resourcesで記述するとこんな感じに。


  try (Socket hoge = new Socket();) { 
    System.out.println(hoge); 
  } catch (Exception e) { 
    e.printStackTrace(); 
  }


うん、便利!
close()メソッド自体はtry-catchを抜ける際に自動で呼び出されるみたいです。
あと、try-with-resourcesで使えるリソースは、以下のInterfaceを実装している必要が
あるみたいです。

  • java.lang.AutoCloseable
  • java.io.Closeable

使用される方は、対象のリソースが上記Interfaceを実装したクラスなのか
注意してください。
 

0 件のコメント:

コメントを投稿