JDK7でクロージャ

この記事によると、JDK7で関数オブジェクトを可能にする構文を提案されているらしい。


【レポート】ついにJavaにもクロージャ? - James Gosling氏らJDK7へ導入提案 (1) Javaに来たるパラダイム変換クロージャ (MYCOMジャーナル)


この記事ではあいまいになっているが、クロージャからの変数副作用をどう扱うかによって、このクロージャがどういう目的で使えるかわかってきそうだ。今の匿名クラスの、ローカル変数参照はすべてfinal縛り、というはトリッキーなコードが必要になる面が多くて、少しきつい気がするから。


この記事のソースになっているホワイトペーパーはここのようだ。


named returnとかあった。さらにfurther ideasでrubyのブロックのような関数呼び出しでのクロージャ渡しの省略表記も考えているようで、汎用的な言語拡張ぽいことができるようにしたいのかもしれない。


現状のJavaでのクロージャスタイルプログラミングでの最悪なケースは、メソッド全体の匿名クラス化&その即時呼び出しするメソッド内での匿名クラス利用(言い換えると、letのための匿名クラスと関数渡しのための匿名クラスを別々に使う場合)になるが、これがどれだけ楽に書けるようになるかで評価できそうだ。そしてあまり触れられていないようだが、クロージャとAnnotationとの組み合わせると、いろいろ面白いことができそうに思える。