技術とか戦略とか

証券レガシーシステムを8年間いじった普通のSEによるブログ。技術のみではなく趣味の戦略考察についても。PCから見た方が色々見やすいと思います。

java:今さらながらJava7新機能について調べてみた

新人研修時点ではJava6だったので、Java7やJava8の文法がわからず実務で苦労しています。
というわけで、今回はJava7の新機能について調べてみました。
 
といってもJava7は7年前にリリースされているので、既に色々なページでまとめられています。
例えば以下のページでまとめられています。
 
Java7 の新機能 - にょきにょきブログ

http://aoking.hatenablog.jp/entry/20110808/1312769605

 
この中ではtry-with-resources文が目玉だと思います。
私も実務で見たことがあります。
(初めて見た時は「微妙に見覚えのない書き方だけど何かの方言だろうか…そういえばclose()がないのはいいのか…?」と思ってしまいました)
 
try-with-resources文については以下のページでまとめられています。
 
try-with-resources文の基本

https://qiita.com/Takmiy/items/a0f65c58b407dbc0ca99

 

以下、try-with-resources文に関する補足です。

  • 上記ページではFileInputStreamとFileOutputStreamが挙げられているが、PreparedStatementやResultSet等、リソースを確保してclose()が必要になるオブジェクトに対して広く使用可能である。
  • 従来の文法では「try{リソースを必要とするオブジェクトを生成…」と書いていたものを、try-with-resources文では「try(リソースを必要とするオブジェクトを生成){…」と書く。オブジェクトの生成のみ()の中に切り出すイメージ。
  • finally句でclose()を書けない場合(バッチ処理で一連の処理が全て終わってからでないとclose()できない、等)場合は、従来通りの文法で書く必要がある。try-with-resources文にしてしまうとtryを抜けた段階で自動的にclose()されてしまうので、後の処理でクローズしているオブジェクトを使用しようとしてしまい例外が発生する。