您的位置:首页 > 其它

内部类使用final外部变量

2017-06-23 11:26 344 查看
内部类访问局部变量的时候,变量必须加上final修饰。局部变量在所处的函数执行完之后就释放了,但是内部类对象如果还有引用指向的话它是还存在的。(不管变量是不是final,他的生命周期都在于{}中),

class Outer{
public static void main(String[] args){
Outer out = new Outer();
Object obj = out.method();
}
Object method(){
int locvar = 1;
class Inner{
void displayLocvar(){
System.out.println("locvar = " + locvar);
}
}
Object in = new Inner();
return in;
}}


当out.method()方法执行结束后,局部变量 locvar 就消失了,但是在method()方法中 obj in = new Inner() 产生的 in 对象还存在引用obj,即内部类对象的生命周期会超过局部变量的生命期。使用final修饰局部变量,方法调用结束,所有的局部变量(含final)全死亡了。但是局部内部类对象中有final型局部变量的拷贝,因而局部内部类对象在变量死亡后,照样可以访问final型局部变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  内部类 外部变量
相关文章推荐