Was macht der Pfeil-Operator ‘->’ in Java?

Beim Durchstöbern eines Codes bin ich auf den Pfeiloperator gestoßen, was genau macht er? Ich dachte Java hätte keinen Pfeiloperator.

return (Collection) CollectionUtils.select(listOfCars, (arg0) -> { return Car.SEDAN == ((Car)arg0).getStyle(); }); 

Details : Java 6, Apache Commons Sammlung, IntelliJ 12

Update / Antwort: Es stellt sich heraus, dass IntelliJ 12 Java 8 unterstützt, das lambdas unterstützt und Prädikate “faltet” und sie als lambdas anzeigt. Unten ist der “nicht gefaltete” Code.

 return (Collection) CollectionUtils.select(listOfCars, new Predicate() { public boolean evaluate(Object arg0) { return Car.SEDAN == ((Car)arg0).getStyle(); } }); 

Das ist Teil der Syntax der neuen Lambda-Ausdrücke, die in Java 8 eingeführt werden. Es gibt ein paar Online-Tutorials, um den Überblick zu behalten, hier ist ein Link zu einem. Grundsätzlich trennt das -> die Parameter (links) vom eigentlichen Ausdruck (rechte Seite).

Ich glaube, dieser Pfeil existiert aufgrund Ihrer IDE. IntelliJ IDEA macht so etwas mit etwas Code. Dies wird als Codefaltung bezeichnet. Sie können auf den Pfeil klicken, um ihn zu erweitern.

Dieser ist auch nützlich, wenn Sie eine Schnittstelle implementieren möchten

 Runnable r = ()-> System.out.print("Run method"); 

ist äquivalent zu

 Runnable r = new Runnable() { @Override public void run() { System.out.print("Run method"); } }; 

Es ist ein Lambda-Ausdruck.

Das bedeutet, dass arg0 aus dem listOfCars eines der Elemente dieser Liste ist. Mit diesem Gegenstand wird er tun, daher das -> was auch immer innerhalb der Klammern ist.

In diesem Beispiel wird er eine Liste von Autos zurückgeben, die der Bedingung entsprechen

 Car.SEDAN == ((Car)arg0).getStyle();