Vergleichen von Lambda-Ausdrücken
F: Gibt es eine Möglichkeit, Lambda-Ausdrücke zu vergleichen?
A: Die Java-Sprachspezifikation definiert keine Möglichkeit zum Vergleichen von Lambda-Ausdrücken, ermöglicht es Implementierungen jedoch, ihre eigenen Vergleichsmethoden bereitzustellen.
Überlegungen zur Implementierung
Derzeit dort ist eine 1:1-Beziehung zwischen den synthetischen Klassen, die Lambdas implementieren, und den Erfassungsstellen im Programm. Daher werden zwei Lambda-Ausdrücke, die dieselbe Variable an derselben Erfassungsstelle erfassen, durch dieselbe Instanz dargestellt und können mithilfe der Referenzgleichheit verglichen werden. Wenn jedoch zwei Lambda-Ausdrücke dieselbe Variable an verschiedenen Erfassungsorten erfassen oder nicht erfassen, werden sie möglicherweise durch unterschiedliche Instanzen dargestellt und können nicht mithilfe der Referenzgleichheit verglichen werden.
Alternativen
Wenn Sie Lambda-Ausdrücke vergleichen müssen, ist die Verwendung der Serialisierung eine Alternative. Serialisierbare Lambdas können anhand ihrer serialisierten Form verglichen werden. Eine weitere Alternative besteht darin, Methodenreferenzen anstelle von Lambda-Ausdrücken zu verwenden. Methodenreferenzen können mithilfe der Referenzgleichheit verglichen werden, wenn sie sich auf dieselbe Methode beziehen.
Menschenlesbare Ausgabe
Es ist derzeit nicht möglich, eine menschenlesbare Zeichenfolge zu erhalten Darstellung eines Lambda-Ausdrucks. Es ist jedoch möglich, den Namen der Methode, auf die sich der Lambda-Ausdruck bezieht, mithilfe von Reflection zu extrahieren.
Das obige ist der detaillierte Inhalt vonKönnen Lambda-Ausdrücke in Java verglichen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!