In Lambda-Ausdrücken wird erwartet, dass Variablen, die im Rahmen des Ausdrucks verwendet werden, entweder endgültig oder „effektiv endgültig“ sind. Diese Einschränkung ergibt sich aus der Unveränderlichkeitsanforderung an erfasste Variablen.
Die Java Language Specification (JLS) erklärt dies in §15.27.2:
„Die Beschränkung auf effektiv endgültige Variablen verbietet den Zugriff auf dynamisch.“ -Änderung lokaler Variablen, deren Erfassung wahrscheinlich zu Parallelitätsproblemen führen würde.“
Um das Risiko von Fehlern zu minimieren, wurde entschieden, dass erfasste Variablen niemals geändert werden sollten veränderlich. Dadurch wird sichergestellt, dass die Werte, auf die das Lambda zugreift, während der gesamten Ausführung konsistent bleiben.
Diese Einschränkung gilt nicht nur für Lambda-Ausdrücke, sondern auch für anonyme innere Klassen. Daher ist es wichtig sicherzustellen, dass die in solchen Konstrukten verwendeten Variablen entweder als endgültig oder effektiv als endgültig deklariert werden (d. h. nur einmal ein Wert zugewiesen und niemals geändert wird).
Das obige ist der detaillierte Inhalt vonWarum müssen Lambda-Ausdrucksvariablen tatsächlich endgültig sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!