2013-12-15 5 views
7

Zum Beispiel, warum kann ich die LinieWarum müssen Doppel-Doppelpunkte für Methodenreferenzen verwendet werden?

Character[] c = Arrays.sort(list.toArray(new Character[list.size()])) 

Aber in der Dokumentation zu schreiben, wenn ich über Methode Referenzierung lesen, sagen sie mir :: anstatt zu benutzen? Tut es nicht dasselbe wie der Operator .?

Ich weiß nicht, ob der obige Code kompiliert, wie ich dies auf meinem Handy tippe. Betrachten Sie es als ein loses Beispiel.

+3

ummmmmm ... '' :: ist ein Syntaxfehler in Java . Welche Dokumentation hast du gelesen? – Doorknob

+3

Liest du ein Tutorial über Java 8? –

+1

Können Sie den Link angeben, wo Sie dies lesen? Es ist nicht Java, es ist C++. –

Antwort

10

Der doppelte Doppelpunktoperator ist ein neuer Operator, der in Java8 bereitgestellt wird. Es ist syntaktischer Zucker, der den Compiler anweist, basierend auf dem Kontext ein Lambda zu erzeugen, das die Methode aufrufen wird. Dies macht einige Lambda-Ausdrücke etwas einfacher. Vor Java8 existiert dieser Operator nicht und nein, es ist nicht dasselbe wie der Punktoperator (.). Zum Beispiel:

Math.max(4, 6) // Calls Math.max with the arguments 4 and 6 
Math::max // A reference to the max method in the java.lang.Math class 

Für ein bisschen extra Lesen (Obwohl diese Sachen alle in Beta ist und offiziell freigegeben wurde nicht) versuchen http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html

+0

Genau dort sah ich es, ich lernte etwas über Lambdas und es verwirrte die Hölle aus mir heraus. –

+0

Es ist wirklich, Java in Übereinstimmung mit C++ usw. über die gesamten Methodenzeiger und anonyme Funktionen zu bringen Dinge. – Sinkingpoint

Verwandte Themen