Pretty nice to see this actually happening.
Java Closures: first prototype
Closures for the Java Programming Language
아래는 www.javac.info에서 가져온 예입니다.
두 정수의 합 구하기 Closure Literal.
{int x, int y => x+y}
두 정수의 합 구하기 Closure를 지역 변수 plus에 할당하기
{int,int=>int} plus = {int x, int y => x+y};
내부적으로는 위와 같은 literal들이 translation 됩니다. 예를들어,
{int,String=>Number throws IOException} xyzzy;
와 같은 변수 선언은
interface Closure1<R,A2,throws E> { // system-generated R invoke(int x1, A2 x2) throws E; } Closure1<? extends Number,? super String,null> xyzzy;
와 같이 변환됩니다.
Control Invocation Syntax의 예
withLock(lock) { System.out.println("hello"); }
file 처리의 예
with(FileReader in : makeReader()) with(FileWriter out : makeWriter()) { // code using in and out }