In Java 8 gibt es die Funktion "Methodenreferenz". Einer seiner Art ist "Referenz auf eine Instanzmethode eines beliebigen Objekts eines bestimmten Typs"
Kann jemand erklären, was "willkürliches Objekt eines bestimmten Typs" in diesem Zusammenhang bedeutet?
Es ist eine Referenz auf eine Instanzmethode von einem Typ. Im Fall des Beispiels ist compareToIgnoreCase
eine Methode von String
. Das Programm weiß, dass es diese Methode für eine Instanz von String
aufrufen kann. Daher kann es die Referenz und jedes Objekt dieses Typs verwenden und garantiert, dass die Methode existiert.
Ich würde dies mit der Method
-Klasse vergleichen, da sie sich auf eine Methode beziehen und auf einer beliebigen Instanz eines beliebigen Typs aufgerufen werden können.
Für das Beispiel kann es zwei String
-Objekte verwenden und compareToIngoreCase
für eins aufrufen und das andere als Argument verwenden, um der Methodensignatur zu entsprechen. Dies ermöglicht es, das Array zu verwenden und es basierend auf einer beliebigen Methode des Array-Typs zu sortieren, anstatt dass stattdessen eine Vergleichsinstanz benötigt wird.
Und hier ist das Beispiel für jeden, der nicht auf den Link in der Frage geklickt hat:
%Vor%Das Beispiel aus dem verknüpften Oracle-Dokument lautet:
%Vor%Das Lambda-Äquivalent von
%Vor%wäre
%Vor% Die Methode Arrays.sort()
sucht nach einem Komparator als zweitem Argument (in diesem Beispiel). Durch die Übergabe von String::compareToIgnoreCase
wird ein Komparator mit a.compareToIgnoreCase(b)
als Körper der Vergleichsmethode erstellt. Sie fragen dann gut, was a
und b
ist. Das erste Argument für die Vergleichsmethode wird a
und die zweite b
. Das sind die willkürlichen Objekte vom Typ String (der bestimmte Typ).
Verstehe nicht?
Lesen Sie mehr an der Quelle: Ссылка
Tags und Links java java-8 method-reference