黑马程序员技术交流社区

标题: 请问:为什么匿名内部类和局部内部类只能访问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