Was genau macht ich beim Durchsuchen eines Codes, der auf den Pfeiloperator gestoßen ist? Ich dachte, Java hätte keinen Pfeiloperator.
return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});
Details : Java 6, Apache Commons Collection, IntelliJ 12
Update / Antwort: Es stellt sich heraus, dass IntelliJ 12 Java 8 unterstützt, das Lambdas unterstützt, Prädikate "faltet" und sie als Lambdas anzeigt. Unten ist der "ungefaltete" Code.
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
java
intellij-idea
apache-commons
java-8
apache-commons-collection
Mike Rylander
quelle
quelle
Antworten:
Dies ist Teil der Syntax der neuen Lambda-Ausdrücke, die in Java 8 eingeführt werden sollen. Es gibt einige Online-Tutorials, um den Überblick zu behalten. Hier ist ein Link zu einem. Grundsätzlich
->
trennt das die Parameter (links) von der Implementierung (rechts).Die allgemeine Syntax für die Verwendung von Lambda-Ausdrücken lautet
(Parameter) -> {Body} wobei das '->' Parameter und Lambda-Ausdruckskörper trennt.
Die Parameter sind wie bei Methoden in Klammern eingeschlossen, und der Lambda-Ausdruckskörper ist ein Codeblock in geschweiften Klammern.
quelle
Dieser ist auch nützlich, wenn Sie eine funktionale Schnittstelle implementieren möchten
ist äquivalent zu
quelle
Ich glaube, dieser Pfeil existiert aufgrund Ihrer IDE. IntelliJ IDEA macht so etwas mit etwas Code. Dies wird als Code-Faltung bezeichnet. Sie können auf den Pfeil klicken, um ihn zu erweitern.
quelle
Es ist ein Lambda-Ausdruck.
Dies bedeutet, dass arg0 aus listOfCars eines der Elemente dieser Liste ist. Mit diesem Gegenstand wird er etwas tun, daher das ->, was auch immer sich in den Klammern befindet.
In diesem Beispiel gibt er eine Liste der Autos zurück, die dem Zustand entsprechen
quelle
Neuer Operator für Lambda-Ausdruck in Java 8 hinzugefügt
Der Lambda-Ausdruck ist die kurze Methode zum Schreiben von Methoden.
Es wird indirekt verwendet, um eine funktionale Schnittstelle zu implementieren
Primäre Syntax: (Parameter) -> {Anweisungen; }}
Es gibt einige Grundregeln für effektives Schreiben von Lambda-Ausdrücken, die Sie kennen sollten.
quelle