内部类引用局部变量为什么要求必须是final的,而引用全局变量就不需要?
在内部类中访问局部变量,编译器实际上会为该内部类创建一个成员变量,以及带有参数的构造方法,然后将该变量传入构造方法,也就是说外面的变量和类里面的变量就是名字相同而已,此时你无论修改哪一个都对另外一个不产生影响,这样就出现矛盾了,防止这种现象就规定只准用final。
你可以自己定义构造方法然后传进去,就没必要定义final变量。成员变量的话实际上内部类访问就是用类似于Test.this.xxx的形式访问跟类信息或者对象信息有关的,修改哪一个都会造成变量值的修改,就不存在上面的那种矛盾了