jdk1.7新機能try(){}

712 ワード

最近あるグループで友達がセグメントコードを送ったのを見た.
public void xxx(){

        try(InputStream fis = new FileInputStream(source)){
      byte[] buf = new byte[1024];
      //       ........
}
       catch(BussineExpection e)
throw e;
}

疑問1:InputStreamはなぜfinallyで閉じないのか
疑問2:try()のコードはどういう意味ですか
このような疑問を抱いて、私はいくつかの資料を調査しました.
jdk 7の新しいプロパティであるtry-with-resources文という名前がわかりました.
ARMブロック(Automatic ResourceManagement)と呼ばれ、自動的にリソース管理されます.
新しい文は、ストリームと閉じられるリソースを含むことをサポートします.
データストリームはtryの実行が完了すると自動的に閉じられ、コードが優雅になるのではないでしょうか.
これらの閉じられるリソースはjavaを実現する必要があることを前提とする.lang.AutoCloseableインタフェース.
さて、今回はファイルリソースクラスに関するutilツールクラスを作成するときに
非常に優雅なコードを書くことができると同時に、私たちのプログラマーの追い詰めも向上しました.