为什么局部内部类访问外部类当前方法中的局部变量时,局部变量必须要加final修饰?

例如

变量local前必须要加final修饰

原因:变量与对象的生命周期不同。如果不加final,变量local会被瞬间回收,而对象依然会被保留在堆中,这时编译就会报错。要想达到在局部内部类中访问外部类当前方法中的局部变量的目的,就必须要保证变量名的生命周期与对象的生命周期一致或大于它。所以就必须要加final使变量(常亮)保存在回收更严谨的池中。

网上关于这个问题的说法版本很多,这个才是正解。

1 个评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注