新しい制御構文の定義例 Javaのクロージャに関するJSRのドラフトには、クロージャを導入することのメリットとして、新しい制御構文を独自に定義し、JavaのAPIを拡張できるということが挙げられている。前回は、Control invocation syntaxを利用して定義した新しい制御構文の例として、任意のロック機構で排他処理を行うwithLock文を紹介した。 同様の例としてよく挙げられるのが、ストリームの処理に利用するwith文だ。with文では引数にストリームオブジェクトを受け取り、処理が終了した際に必ずそのストリームを閉じるという制御構文である。 具体的には、リスト1のような定義になる(プロトタイプ仕様より引用)。ここでは、withメソッドはjava.io.Closeableオブジェクトを受け取り、それをクロージャのinvoke()に渡すように実装されている。そして処理が終了した