那我帮你解释一下你的问题,之所以方法内部类不能访问方法的局部变量,
这是因为局部变量和内部类的生命期是不一样的,局部方法在方法调用完后就消失了,而内部类只要有引用,就会一直存在。
这样就会出现,一个存在的内部类,去访问一个已经不存在的局部变量,这不是荒谬吗?
所以为了实现这个需求,java公司就规范内部类可以访问final的局部量,
注意,这时不是访问的这个量的本身,而是访问这个final的拷贝值
比如我在方法内定义一个 final int a = 10;
然后内部类就会把这个a 复制一份,作为自己的成员变量。而原来这个a,在方法调用完后,就消失了。
以后内部类访问的都是他自己的成员变量,但看起来就好像在访问局部变量一样,知道了吗?
而之所以需要什么成final ,是因为实际逻辑考虑的,如果不声明成final,那就可以会存在这种情况:你把一个已经消失的变量值改变了,这不是滑天下之大稽?
话说回来,任何规范都有他的初衷和因果,
是你自己理解不够深入,解释不通,却叫别人不要纠结?
|