黑马程序员技术交流社区
标题:
内部类问题
[打印本页]
作者:
唐志海
时间:
2014-2-4 12:43
标题:
内部类问题
本帖最后由 唐志海 于 2014-2-5 17:11 编辑
当内部类定义在局部的时候要 访问它所在函数的变量,为什么该变量要加fianl修饰?
作者:
榨菜
时间:
2014-2-4 12:52
在方法中定义的内部类智能访问方法中final类型的局部变量,这是因为在方法中定义的局部变量相当于一个常量,它的生命周期超出运行的生命周期,由于该局部变量被设置为final,所以不能在内部类中改变该局部变量的值。-----在《Java从入门到精通》-209P
作者:
e.c
时间:
2014-2-4 13:58
局部内部类要访问所在方法中的变量会有一个问题:当一个线程执行完方法时,变量内存就会被释放。而此时局部内部类就访问不到变量。为了解决这个问题,类部类在创建时会拷贝一个变量副本。当要访问时,其实访问的是副本。
这时又有另一个问题。当方法中的变量改变了,而局部内部类还是访问的副本。这样数据就不一至了。而解决方法就是final。这样就可以保证数据一至性。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2