因为局部内部类,与局部变量的的生命周期不同,比如内部类Inner的对象方法function(),它里面调用了一个局部变量x,而这个方法结束后,这个局部变量x就不存在了,可是这个局部内部类对象却还可能存在(没有人调用时,它才会消失)。不会随着方法function()的结束而消失,所以这时就可能出现这个内部类对象访问一个不存在的局部变量,这时用final来修饰,可以理解为延长了局部变量的生命周期(final将局部变量复制了一份,当局部变量死亡时,它可以继续访问局部变量的复制品....)
- class Outer{
- void method(){
- int x=3;
- class Inner{ //内部类
- void function(){
- System.out.println("inner:"+x);
- }
- }
- }
- }
复制代码
|