Was bedeutet der Pfeil-operator '->' in Java?
Während der Jagd durch einige code-ich kam über den Pfeil-operator, was genau tut es? Ich dachte, dass Java nicht über einen Pfeil-operator.
return (Collection<Car>) 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 unterstützt Java 8, die unterstützt Lambda-Ausdrücke, und "Klapp" - Prädikate und deren Anzeige als Lambda-Ausdrücke. Unten ist die "un-gefalteten" code.
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
Beachten Sie, dass das genaue Szenario ist IntelliJ rendering den vorhandenen code, wie ein lambda-Ausdruck, um es einfacher zu Lesen. Der eigentliche code ist nicht ein lambda-Ausdruck.
Ich weiß nicht, warum, aber der eigentliche code ist lesbarer als den lambda-Ausdruck. 🙂
Ich weiß nicht, warum, aber der eigentliche code ist lesbarer als den lambda-Ausdruck. 🙂
InformationsquelleAutor Mike Rylander | 2013-02-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist Teil der syntax der neuen lambda-Ausdrücke eingeführt werden, die in Java 8. Es gibt ein paar online-tutorials, um den Dreh raus, hier ist ein link zu. Im Grunde, die
->
trennt die Parameter (linken Seite) von den tatsächlichen Ausdruck (rechts).OP könnte sein, die mit Java 6, aber in der Frage, die er angibt, er stieß auf, dass der code an anderer Stelle. Warum IntelliJ ist nicht die Berichterstattung ein Fehler, das ist ein Rätsel (vielleicht ist es wird ein Java-7-version installiert irgendwo in OP ' s system). Aber das ist ein lambda-Ausdruck ist die syntax in Java, es gibt keine Frage über es.
InformationsquelleAutor Óscar López
Ich glaube, dieser Pfeil existiert, weil Sie Ihre IDE. IntelliJ IDEE ist ein solches Ding mit dem code. Dies wird als code-folding. Sie können klicken Sie auf den Pfeil, um es zu erweitern.
Das ist falsch. Es ist eine Java-8-lambda-Ausdruck.
Nein, es ist nicht falsch. IntelliJ macht ja Falten inline-Implementierungen von funktionalen Schnittstellen zu schauen, wie Lambda-Ausdrücke.
Blick auf die Frage: "Details: Java 6, Apache-Commons-Sammlung, IntelliJ 12" Lambda in java 6 ???
InformationsquelleAutor Anton-M
Dies ist nützlich, wenn Sie möchten, eine Schnittstelle implementieren,
entspricht
InformationsquelleAutor Justin Patel
Es ist ein lambda-Ausdruck.
Es bedeutet, daß von den listOfCars, arg0, ist eines der Elemente der Liste.
Mit diesem Element, er werde tun, damit die>, was innerhalb der eckigen Klammern.
In diesem Beispiel, die er geht, um eine Liste der Autos, die passen, die Bedingung
InformationsquelleAutor simple-thomas
Neuen Betreiber für lambda-Ausdruck Hinzugefügt, der in java 8
Lambda-Ausdruck ist die kurzen Weg von Methode schreiben.
Es ist indirekt implementiert funktionale Schnittstelle
Primäre Syntax : (Parameter) -> { Anweisungen; }
Gibt es einige grundlegende Regeln für eine effektive lambda-Ausdrücke schreiben, die Sie sollten wissen, dass.
InformationsquelleAutor Manasi