why i should be final?
Because local variables of the method live on the stack, and exist only
for the lifetime of the method.When the method ends, the stack frame is blown away and the variable is history. But even after the method completes,the inner class object created within it might still be alive on the heap if, for example, a reference to it was passed into some other code and then stored in an instance variable. 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!