黑马程序员技术交流社区
标题:
请问:为什么匿名内部类和局部内部类只能访问final变量 ?
[打印本页]
作者:
曾经的迷失
时间:
2014-3-23 09:58
标题:
请问:为什么匿名内部类和局部内部类只能访问final变量 ?
为什么匿名内部类和局部内部类只能访问final变量 ?
作者:
Ranger
时间:
2014-3-23 10:15
加final是为了延长局部变量的生命周期,防止变量在栈内存中提前出栈,后面没法调用局部变量。
作者:
电饭煲
时间:
2014-3-23 11:35
简单的来说是作用域的问题。就好像方法外面做的事情并不能改变方法内才定义的变量,因为你并不知道方法里面这个时候已经存在了这个局部变量了没有。在这个内部类中方法里面的本地变量是失效的,也就是不在作用域内,所以是不能够访问的
因为Java采用了一种copy local variable的方式来实现,也就是说把定义为final的局部变量拷贝过来用,而引用的也可以拿过来用,只是不能重新赋值。从而造成了可以access local variable的假象,而这个时候由于不能重新赋值,所以一般不会造成不可预料的事情发生
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2