Lambda Expressions Require "Final" or "Effectively Final" Variables
The error message "Variable used in lambda expression should be final or effectively final" indicates that a variable used within a lambda expression must be declared as final or meet specific criteria to be considered effectively Final.
im Code -Snippet bereitgestellt:
private TimeZone extractCalendarTimeZoneComponent(Calendar cal, TimeZone calTz) { // Code missing cal.getComponents().getComponents("VTIMEZONE").forEach(component -> { // Code missing if (calTz == null) { calTz = TimeZone.getTimeZone(v.getTimeZoneId().getValue()); } }); // Code missing }
Der Fehler wird geworfen, weil die CALTZ -Variable innerhalb des Lambda -Ausdrucks nicht als endgültig deklariert wird. Java requires that variables used in lambda expressions be final or effectively final to prevent potential concurrency issues.
Why the Requirement Exists
The Java Language Specification (§15.27.2) states:
The restriction to effectively final variables prohibits access to dynamically-changing local Variablen, deren Erfassung wahrscheinlich Parallelitätsprobleme einführen würde.
Java zielt im Wesentlichen darauf ab, Risiken zu mildern, indem sie die Mutation erfasster Variablen innerhalb von Lambda -Ausdrücken verhindern. Dies hilft, vorhersehbares und korrektes Verhalten in multitHhread -Umgebungen zu gewährleisten.
Um die Sicherheit von Threads zu gewährleisten und Probleme mit der Parallelität zu verhindern, sollten Variablen, die in Lambda -Ausdrücken verwendet werden, als endgültig oder effektiv endgültig deklariert werden, was bedeutet, dass sie nicht innerhalb des Bereichs von Lambda geändert werden können.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3