Heim >Java >javaLernprogramm >Verwirrung um Methodenreferenzierung

Verwirrung um Methodenreferenzierung

Patricia Arquette
Patricia ArquetteOriginal
2024-09-23 06:21:14511Durchsuche

Confusion Around Method Referencing

Methodenreferenzen in Java bieten eine Möglichkeit, auf Methoden oder Konstruktoren zu verweisen, ohne sie explizit aufzurufen. Sie können als Kurzschrift zum Schreiben einfacher Lambda-Ausdrücke betrachtet werden.

Meistens kann die Methodenreferenzierung entweder statisch sein oder sich auf eine Instanz beziehen:

Integer::sum;
System.out::println;

Dies sind Beispiele für statische Methodenreferenzen (auch als gebundene Referenzierung bekannt).

Bedenken Sie jedoch Folgendes:

String::concat

Concatis ist hier keine statische Methode. Wie funktioniert das? Dies ist ein Beispiel für ungebundene Referenzierung. Der Compiler versteht, dass es sich hierbei um eine Instanzmethodenreferenz handelt, die auf der Art und Weise basiert, wie unser Code geschrieben ist. Dadurch ist es möglich, Methodenaufrufe wie diesen zu vereinfachen.

Die Art und Weise, wie wir unseren Code schreiben, bestimmt diese Art von Referenzen (insbesondere ungebundene). Am Beispiel von Concatas:

((a, b) -> a + b, "Hello", "World");
// ----------------Is same as -------------
((a, b) -> a.concat(b), "Hello", "World"); // This one could be replaced by mehod referencing

// ----------------Alternative-------------

(String::concat, "Hello", "World");

/* The use of 'a' as the first parameter and calling `concat `of 'a' itself 
gives the compiler an idea of how it should decode `String::concat`*/

Anstatt also ein vollständiges Lambda zu schreiben, können wir es mit einer Methodenreferenz vereinfachen.

Weiter lernen?

Das obige ist der detaillierte Inhalt vonVerwirrung um Methodenreferenzierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn