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!