Project Lambda: So werden Closures in Java 8 aussehen
Wie Oracles Java-Sprachdesigner Brian Goetz auf der Project Lambda Mailing-Liste bekannt gegeben hat, wird die Umsetzung von Closures in Java 8 im Wesentlichen dieselbe Syntax wie in C# erhalten. Als Beispiel gibt Goetz das folgende C#-Snippet an:
lambda = ArgList Arrow Body ArgList = Identifier | "(" Identifier [ "," Identifier ]* ")" | "(" Type Identifier [ "," Type Identifier ]* ")" Body = Expression | "{" [ Statement ";" ]+ "}"
Lambda Expressions, die von dieser Syntax Gebrauch machen, sind z.B.:
x => x + 1 (x) => x + 1 (int x) => x + 1 (int x, int y) => x + y (x, y) => x + y (x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); } () => { System.out.println("I am a Runnable"); }
Die Anlehnung an C# bedeutet auch, dass die Closures-Implementierung in Java 8 sehr ähnlich zu der Umsetzung in Scala sein wird. Ein wenig Feintuning muss nun noch erledigt werden, z.B. die Entscheidung getroffen: dünner Pfeil versus dicker Pfeil, eine spezielle „nilary form“. Außerdem steht noch die Frage an, welche Method-Reference-Syntax in den Java-8-Closures zum Einsatz kommen soll.
Goetz kündigt an, dass in Kürze eine entsprechende Compiler-Implementierung veröffentlicht werden soll.
Die Reaktion von Peter Levart:
Hurray!
Hinterlasse einen Kommentar