Eine Lambda-Syntax fĂĽr Java

Eine Syntax für Lambda-Audrücke in Java wird schon länger in Betracht gezogen. Jetzt scheint man sich auf eine an C# angelehnte Variante geeinigt zu haben.

vorlesen Druckansicht 17 Kommentare lesen
Lesezeit: 1 Min.
Von
  • Robert Lippert

Bekommt Java seine eigene Syntax für Lambda-Ausdrücke? Ein erster Grundstein scheint gelegt, Brian Goetz, Language Architect für Java bei Oracle, meldete sich in der lambda-dev-Mailingliste mit der Nachricht, dass man sich auf eine Syntax für Lambda-Ausdrücke in Java geeinigt hätte. Demnach werde man sich im Wesentlichen an der aus C# bekannten Syntax orientieren, die sich auch schon in Scala bewährt hätte.

Lambda-Syntax in C#
lambda = ArgList Arrow Body
ArgList = Identifier
| "(" Identifier [ "," Identifier ]* ")"
| "(" Type Identifier [ "," Type Identifier ]* ")"
Body = Expression
| "{" [ Statement ";" ]+ "}"

Das erlaube dann AusdrĂĽcke wie:

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"); }

Etwas Feintuning will man noch der konkreten Darstellung angedeihen lassen, auch zur Syntax fĂĽr die Methodenreferenzierung wird man erst noch eine Entscheidung treffen mĂĽssen, so Goetz.

Lambda-Ausdrücke sind praktisch eine Weiterentwicklung anonymer Funktionen, die Ausdrücke und Anweisungen enthalten können und sich zum Beispiel für die Erstellung von Ausdrucksbaumstrukturen (Expression Trees) oder Delegaten (Objekte, die eine Referenz auf statische oder nicht-statische Funktionen enthalten) eignen. ()