Äquivalenz der System.out::println-Methodenreferenz im Lambda-Ausdruck
In Java ermöglicht die Methodenreferenz System.out::println für eine prägnante Möglichkeit, auf die Methode System.out.println() zu verweisen. Es wertet System.out aus und weist es einer Variablen zu.
Frage:
Was ist der entsprechende Lambda-Ausdruck für System.out::println, der das gleiche Verhalten liefert? ?
Antwort:
Ein exakt äquivalenter Lambda-Ausdruck wäre:
num -> { PrintStream p = Objects.requireNonNull(System.out); p.println(num); }
Dieser Lambda-Ausdruck erfasst den Verweis auf System.out im Variable p, bevor Sie die println-Methode ausführen. Dadurch wird verhindert, dass Änderungen an System.out das Verhalten des Lambda-Ausdrucks beeinflussen.
Unterschied zum einfachen Lambda-Ausdruck:
Ein einfacherer Lambda-Ausdruck wie num -> System.out.println(num) wertet System.out bei jedem Aufruf aus und macht es somit anfällig für Änderungen in System.out, während das Lambda ausgeführt wird.
Verwendung:
Der entsprechende Lambda-Ausdruck kann auf die gleiche Weise wie System.out::println verwendet werden, wie zum Beispiel:
Listnumbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); numbers.forEach(num -> { PrintStream p = Objects.requireNonNull(System.out); p.println(num); });
Dieser Code gibt die Zahlen in der Liste auf der Konsole aus.
Das obige ist der detaillierte Inhalt vonWas ist der Lambda-Ausdruck, der der System.out::println-Methodenreferenz entspricht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!