码迷,mamicode.com
首页 > 其他好文 > 详细

为什么内部类访问的外部变量需要使用final修饰

时间:2017-10-06 19:33:46      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:为什么   对象   java   区域   找不到   就会   color   没有   类的方法   

因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。

首先,内部类和外部类其实是处于同一个级别,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义final,那么当外部类方法执行完毕的时候,这个局部变量肯定也就被GC了,然而内部类的某个方法还没有执行完,这个时候他所引用的外部变量已经找不到了。如果定义为final,java会将这个变量复制一份作为成员变量内置于内部类中,这样的话,由于final所修饰的值始终无法改变,所以这个变量所指向的内存区域就不会变。

 

注意:这个外部变量仅仅指局部变量,对全局变量无要求。

为什么内部类访问的外部变量需要使用final修饰

标签:为什么   对象   java   区域   找不到   就会   color   没有   类的方法   

原文地址:http://www.cnblogs.com/limingxian537423/p/7631995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!