I'm studying inner classes from kb6 book and i have a doubt regarding inner classes. the book says that method local inner classes cannot access local variables of the method because local variables live on stack and they wont be as long available as the object of the inner class itself and hence the reason. however it further says that if we mark the local variables final , then the object of the method local inner class can access the local variable. i would like to know why ? after putting final still the local variable is local variable and its scope and lifetime still will be same as it was before putting final and still would live less than method local inner class object. Please explain ?
following are few lines from the book itself.
Because the local variables aren't guaranteed to be alive as long
as the method-local inner class object, the inner class object can't use them. Unless
the local variables are marked final! The following code attempts to access a local
variable from within a method-local inner class.