Java7、8で入った機能で知っておいた方がよさそうなもの

Java8でコードを書くことが増えたので、Java7と8の新機能で知っておいた方がよさそうなことを、いまさらながら書き出してみます。

重要度は、自分自身が使う頻度が多かったもので判断しているので、あまりあてにならないかもしれません…
たとえば、Date and Time APIは、日付操作するようなコード書くことになった場合には、使うことになるのではと思っています。(CalendarとDateで頑張るのは苦しいので)

  • 高 (コードを書くときに頻繁に使用することになりそう)
    • try-with-resources [Java7]
      リソースの有効範囲をブロックで指定して、解放漏れを防ぐ。C#でいうusing。
    • More New I/O APIs for Java (NIO.2) [Java7]
      Path/PathsとFilesは覚えておくべき。ファイル、ディレクトリ操作が改善されている。
    • lambda [Java8]
      関数をそのままオブジェクトとして渡せるように書ける。無名クラスのインスタンスを作るような書き方をしなくて済む。
    • Stream API [Java8]
      リストなどに対して、関数型スタイルの操作を行えるように。C#でいうLinqに近い。
  • 中 (知っとくと便利な時も)
    • StandardCharsets [Java7]
      UTF-8を指定する際に、"UTF-8"と文字列を指定するのではなく、定数のStandardCharsets.UTF_8 が利用できる
    • Catching Multiple Exception [Java7]
      catchで複数の例外を指定してまとめてcatchできる。
  • 低 (そういったのがあること自体は頭の中に入れておく)
    • Optional [Java8]
      値がないかもしれないことを表現するクラスとしてOptionalが追加。
    • Date and Time API [Java8]
      日付、時間のAPIが大幅に改善/変更。
    • switchでのString対応 [Java7]
      switch文の指揮にStringが使えるようになった。
  • その他 (参考程度)
    • ダイアモンド演算子 [Java7]
      ジェネリクスを使ったクラスをインスタンス化する際に、型引数を省略可能に