Untersuchen des äquivalenten Lambda-Ausdrucks für System.out::println
In der Java-Programmierung bieten Methodenreferenzen eine prägnante Syntax zum Aufrufen von Methoden. Ein solches Beispiel ist System.out::println, das als Abkürzung für den Verweis auf die println-Methode der System.out-Klasse dient.
Diese Methodenreferenz ermöglicht es uns, Code wie diesen zu schreiben:
numbers.forEach(System.out::println);
wobei die Zahlenliste Ganzzahlen enthält, die auf der Konsole ausgegeben werden. Es gibt jedoch einen entsprechenden Lambda-Ausdruck, der die gleiche Funktionalität erreicht.
Um diesen Lambda-Ausdruck zu finden, müssen wir verstehen, wie Methodenreferenzen funktionieren. Bei Verwendung von System.out::println ergibt die anfängliche Auswertung von System.out eine Instanz von PrintStream, die in einem Lambda-Ausdruck gespeichert und zum Aufrufen von println verwendet wird.
Dieses Konzept direkt in einen Lambda-Ausdruck übersetzen, wir erhalten Folgendes:
numbers.forEach(o -> { PrintStream p = Objects.requireNonNull(System.out); p.println(o); });
Dieser Lambda-Ausdruck ruft explizit die PrintStream-Instanz ab und weist sie der Variablen p zu. Der Platzhalter o stellt jedes Element der Zahlenliste dar.
Es ist erwähnenswert, dass dieser Lambda-Ausdruck ein genaues Äquivalent von System.out::println ist und die ausgewertete System.out-Instanz erfasst. Die letztgenannte Methodenreferenz hat jedoch den Vorteil, dass sie prägnanter und lesbarer ist.
Während der Lambda-Ausdruck also eine explizitere Sicht auf das bietet, was unter der Haube passiert, bleibt die Methodenreferenz System.out::println bestehen eine wertvolle syntaktische Abkürzung in Szenarien wie dem oben dargestellten.
Das obige ist der detaillierte Inhalt vonWas ist der entsprechende Lambda-Ausdruck für „System.out::println' in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!