今天爱分享给大家带来局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?【详细解释】,希望能够帮助到大家。
局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final呢?它内部原理是什么呢?
先看这段代码:
public class Outer {
void outMethod(){
final int a =10;
class Inner {
void innerMethod(){
System.out.println(a);
}
}
}
}
以上例子,为什么要加final呢?是因为生命周期不一致, 局部变量直接存储在栈中,当方法执行结束后,非final的局部变量就被销毁。而局部内部类对局部变量的引用依然存在,如果局部内部类要调用局部变量时,就会出错。加了final,可以确保局部内部类使用的变量与外层的局部变量区分开,解决了这个问题。
常见问题
不显示资源下载框怎么办?
请更换谷歌,微软,火狐等浏览器
微云登录不了,或者重复提示登录?
请更换浏览器,最好使用微软,谷歌,火狐。国产浏览器不好用
原文链接:https://blog.itblood.com/2173.html,转载请注明出处。
