Ich frage mich oft, warum Java ::
anstelle von Methodenreferenzen verwendet .
, z. B. warum
System.out::println
anstatt
System.out.println
Man könnte natürlich einfach antworten: "weil die Designer das entschieden haben". Andererseits hätte ich die zweite Syntax erwartet, da der Punkt die übliche Java-Syntax für den Zugriff auf Klassenmitglieder ist.
Gibt es also einen bekannten besonderen Grund für die Einführung der neuen ::
Syntax, anstatt die vorhandene .
Konvention für Methodenreferenzen zu verwenden?
Sie haben eine neue Syntax eingeführt, weil das Verhalten nicht dasselbe ist.
Dies
.
bedeutet, dass Sie eine Referenz auf die Funktion erhalten möchten, um sie direkt danach aufzurufen .Wenn Sie method reference (
::
) verwenden, möchten Sie eine Referenz in der Funktion speichern, diese jedoch nicht sofort aufrufen .Ein praktischerer Aspekt ist, wie würden Sie zwischen einem öffentlichen Attribut und einer Methode mit demselben Namen mit dem unterscheiden
.
? Das kannst du einfach nicht. Mit::
gibt es keine Mehrdeutigkeit mehr.quelle