t` in Java 8 Lambdas? " />
Function.identity() vs. t->t in Java 8 Lambdas
In Java 8 ist die Function.identity()-Methode eine statische Factory-Methode, die eine Identitätsfunktion zurückgibt. Dies bedeutet, dass eine Funktion, wenn sie auf ein beliebiges Argument angewendet wird, das Argument selbst zurückgibt.
Nun stellt sich die Frage: Warum sollte man Function.identity() anstelle von verwenden besser lesbarer Lambda-Ausdruck, t->t? Obwohl beide Optionen die gleiche Funktionalität erreichen, gibt es subtile Unterschiede zwischen ihnen.
Identität vs. Neue Instanz
In In der aktuellen JRE-Implementierung erstellt jedes Vorkommen von t->t eine eigene Lambda-Implementierungsklasse. Andererseits gibt Function.identity() immer dieselbe Instanz zurück. Diese Unterscheidung kann Auswirkungen auf die Speichernutzung haben, insbesondere wenn Identitätsfunktionen vorhanden sind Wird häufig verwendet.
Überlegungen zum Debuggen
Wenn Debug-Informationen aktiviert sind, enthält die für t->t-Lambda-Ausdrücke generierte synthetische Methode ein Zeilen-Debug-Attribut, das auf zeigt Quellcode, in dem das Lambda definiert ist. Dies kann beim Debuggen während eines Vorgangs hilfreich sein, da es Entwicklern ermöglicht, den Ursprung einer bestimmten Funktionsinstanz zu verfolgen. Im Gegensatz dazu liefert das Debuggen von Function.identity()-Instanzen während eines Vorgangs keine derartigen Quellcodeinformationen.
Wahl der Verwendung
Während Function.identity() geringfügige Informationen bieten kann Um Leistungsvorteile zu erzielen, sollte seine Nutzung nicht ausschließlich durch die Speicheroptimierung bestimmt werden. Die Lesbarkeit des Codes ist von größter Bedeutung. Wenn der Entwickler glaubt, dass t->t die Klarheit des Codes verbessert, sollte es Function.identity() vorgezogen werden.
Fazit
Function.identity() und t->t dienen beide als praktikable Optionen zum Definieren von Identitätsfunktionen in Java 8. Obwohl jede ihre einzigartigen Eigenschaften hat, hängt ihre Wahl von den spezifischen Anforderungen des Codes und den Vorlieben des Entwicklers ab.
Das obige ist der detaillierte Inhalt vonWann sollte man in Java 8 Lambdas „Function.identity()' anstelle von „t -> t' wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!