I wanna know how the methode run() can see 'l' and 'a'?
Because your inner class go
is method local inner class and a
and l
are method local final variable in the same method go()
If you declare the variables final, the inner class knows they won't change, so they can just make a copy of it for private use, which will exist after the original value has been removed from the stack.