This question already has an answer here:
The documentation on Anonymous Classes states
An anonymous class cannot access local variables in its enclosing scope that are not declared as final or effectively final.
I don't understand what does a variable being "effective final" mean. Can someone provide an example to help me understand what that means?
Effectively final means that it is never changed after getting the initial value.
A simple example:
Here,
a
is not declared final, but it is considered effectively final since it is never changed.Starting with Java 8, this can be used in the following way:
In Java 7 and earlier versions,
a
had to be declaredfinal
to be able to be used in an local class like this, but from Java 8 it is enough that it is effectively final.According to the docs:
A variable or parameter whose value is never changed after it is initialized is
effectively final
.