Vergleich von Lambdas: Implementierung und Interpretation
Das Problem:
Gegeben eine Liste von Objekten Ist es möglich, sie mithilfe von Lambda-Ausdrücken zu prüfen und auf Gleichheit zu vergleichen?
Überlegungen zur Implementierung:
Aus Sicht der Implementierung werden nicht erfassende Lambdas gleichzeitig ausgewertet Erfassungsstandorte erzeugen dieselbe Instanz, die mithilfe der Referenzgleichheit verglichen werden kann. Allerdings können unterschiedliche Lambda-Ausdrücke, die an verschiedenen Standorten erfasst werden, unterschiedlichen synthetischen Klassen zugeordnet werden.
Auswirkungen auf die Spezifikation:
Die Sprachspezifikation garantiert nur das Ergebnis der Auswertung eines Lambda-Ausdrucks ist eine Instanz der Zielfunktionsschnittstelle. Es gibt weder die Identität noch das Aliasing des Ergebnisses an. Diese Flexibilität ermöglicht es Implementierungen, die Leistung zu optimieren, indem nicht für jede Lambda-Auswertung eindeutige Instanzen erstellt werden.
Methodenreferenzgleichheit:
Methodenreferenzen können ein praktisches Szenario für die Optimierung der Definition darstellen der Gleichberechtigung, um den Einsatz als Zuhörer zu unterstützen. Dies wird für zukünftige Überarbeitungen in Betracht gezogen.
Eingehende Bewertung:
Um die Gleichheit zweier Lambdas zu bestimmen, müssen ihre Verhaltensfunktion, erfassten Argumente und die funktionale Schnittstelle verglichen werden werden umgewandelt. Allerdings kann es eine Herausforderung sein, diese Informationen für nicht serialisierbare Lambdas zu erhalten.
Entwurfsentscheidungen:
Die Java-Expertengruppe kam zu dem Schluss, dass es sich nicht lohnt, Informationen für Lambda-Gleichheitsvergleiche offenzulegen die Leistungseinbußen für die Mehrheit der Benutzer. Die Machbarkeit einer Verbesserung der toString()-Darstellungen bleibt jedoch für zukünftige Diskussionen offen.
Das obige ist der detaillierte Inhalt vonKönnen Lambdas in Java auf Gleichheit verglichen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!