Suche

Project Lambda: So werden Closures in Java 8 aussehen

Hartmut Schlosser

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!

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.