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.

In Pocket speichern 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. (rl)