来る2011年7月28日は、5年ぶりのJavaアップデート予定日。次期バージョンのJava SE 7にはいくかの新しい要素が含まれているので、先日のJJUG Cross Community Conferenceの振り返りを兼ねてまとめておく。
Java SE 7の主なトピックは以下の通り。
- Project Coin (JSR 334)
- NIO.2(JSR 203)
- Fork/Join Framework
- Invoke Dynamic (JSR292)
Project Coin
Project Coinとは、言語仕様な小さな変更を行うプロジェクト。
switch文でStringが使えるようになる
public void execute(String state) { switch (state) { case "ready": startSomething(); break; case "running" finishJob(); brak; } }
数値表現形式の追加
バイナリ表記(0bで書き始める)が追加された。
- 1 (10進数表記)
- 01 (8進数表記)
- 0x1 (16進数表記)
- 0b1 (バイナリ表記)
可読性向上を目的としたアンダースコア表記が追加された。
// クレカ番号など? long data = 1234_5678_9012L;
マルチキャッチ
数種の例外処理をまとめることが可能になった。
try { doSomething(); } catch (IOException | SqlException e) { e.printStackTrace(); }
例外再送の記述を簡易化
catch句にfinalを付けることで、メソッド定義のthrows部が不要になる。
public void execute() // throws IOException が不要 { try { doSomething(); } catch (final IOException e) { throw e; } }
Genericsインスタンス生成時の型推論強化
右辺では<>のみ記載すればOKになった。
// 今までの書き方 Map<String, String> data = new HashMap<String, String>(); // これからの書き方 Map<String, String> data = new HashMap<>();
try構文におけるリソース解放機能の追加
C#で言うところのusing的な感じ。自動的にclose()メソッドがコールされる。
try ( InputStream is = new FileInputStream("/tmp/data.txt") ) { doSomething(); } catch (IOException e) { e.printStackTrace(); }
0 件のコメント:
コメントを投稿