方法中的内部类不能访问方法中局部变量.
因为内部类和类的成员属性生命周期是不一样的
在内存中,局部变量是存在于栈或堆中,而内部类也是类,它在编译时也会有class文件,jvm根本不知道有内部这东西,
当方法调用结束后,就会弹栈,就是消失在内在中,
而当对该类的引用消失,内部类才会消失,
也就是说,内部类的生命周期超过了方法中局部变量的生命周期,
内部类可能会调用到已经消失的属性,因此内部类不能访问方法中的局部变量。
如果内部类想要访问局部变量,只要该变量用final修饰就可以了
解决办法:被final修饰后该变量就存在于方法区,生命周期和内部类一致
此时内部类就可以访问方法中的局部变量了 |