Was bedeutet "ein beliebiges Objekt eines bestimmten Typs" in Java 8?

8

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?

    
Roman Ivanov 08.05.2014, 05:23
quelle

2 Antworten

5

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%     
Andrew Vitkus 08.05.2014, 06:08
quelle
8

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?

  • Stellen Sie sicher, dass Sie wissen, was ein Komparator ist und wie Sie ihn implementieren .
  • Sie wissen, was eine funktionale Schnittstelle ist und wie sie sich auf lambdas in Java auswirkt.
  • Ein Komparator ist eine funktionale Schnittstelle , daher wird die Methodenreferenz zum Rumpf der Vergleichs-Methode innerhalb des Komparator-Objekts.
  • Lesen Sie die Quelle unten für ein anderes Beispiel am Ende der Seite.

Lesen Sie mehr an der Quelle: Ссылка

    
Jawad 03.09.2014 00:28
quelle

Tags und Links