OracleがJava 7 と Java 8のJSRを発表
http://www.infoq.com/jp/news/2010/11/oracle-java-jsr
JSR 336, Java 7のピックアップ
- switch文での文字列, switch 文で文字列リテラルが使える
- マルチcatch,1つのcatch ブロックで複数の例外タイプが扱えるようになる
- リソース付きのtry, 自動的に「リソース」(AutoCloseableを実装するもので、IOストリームを含む)をクローズする手段を提供する
期待
JSR 336は、コードがスッキリするんだろうな。
JSR 337は、念願のLambda式。
Lambda式って
Lambda式とは?
http://itpro.nikkeibp.co.jp/article/COLUMN/20100222/344923/?ST=develop&P=3
無名関数が宣言できたり
#()( 10 ) #()( new Date() ) #()( new ArrayList<Integer>() ) #()( {1, 2, 3} ) #(int x)( x + x ) #(int x, int y)( x * y ) #(long time)( new Date(time) ) #(int x) { return x + x; }
関数型が宣言できたり
// 宣言 #void(String) logger = #(String message) { System.out.println(message); } // 実行 logger.("Hello, World!"); // Hello, World!が標準出力に出力される
例外も書けたり...
#String(String)(throws IOException) fileReader = #(String filename) { ... throw IOException(); ... return ...; }
これが
List<String> data = ...; Collections.sort(data, new Comparator<String>() { public int compare(String a, String b) { return a.length() - b.length(); } });
こうできたり...
List<String> data = ...; Collections.sort(data, #(String a, String b)( a.length() - b.length() ));
つまり、スッキリするワケだ。
魔術的w