黑马程序员技术交流社区

标题: 谁能解答下:先谢谢啦 [打印本页]

作者: Java好久不见    时间: 2016-6-23 20:18
标题: 谁能解答下:先谢谢啦
java为什么匿名内部类的参数引用时final 反而会报错?
作者: L1ub0w3n    时间: 2016-6-23 21:26
事实上,除了匿名内部类内部,方法和作用域内的内部类内部使用的外部变量也必须是 final 的。原因如下:
内部类会自动拷贝外部变量的引用,为了避免:1. 外部方法修改引用,而导致内部类得到的引用值不一致 2.内部类修改引用,而导致外部方法的参数值在修改前和修改后不一致。于是就用 final 来让该引用不可改变。
作者: 孟小垚    时间: 2016-6-23 21:28
学习,努力加油!
作者: Java好久不见    时间: 2016-6-23 22:40
L1ub0w3n 发表于 2016-6-23 21:26
事实上,除了匿名内部类内部,方法和作用域内的内部类内部使用的外部变量也必须是 final 的。原因如下:
内 ...

谢谢,
作者: 他的好    时间: 2016-6-23 22:51
我想给你解答,但是我不会
作者: Java好久不见    时间: 2016-6-23 22:57
他的好 发表于 2016-6-23 22:51
我想给你解答,但是我不会

一起加油,
作者: 一个大西瓜    时间: 2016-6-23 23:25
学习了 !!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2