黑马程序员技术交流社区

标题: 匿名内部类 [打印本页]

作者: cuculidae    时间: 2016-2-18 23:43
标题: 匿名内部类
为什么匿名内部类访问所在方法的成员变量时,成员变量要用final修饰?


作者: xuecmg    时间: 2016-2-19 17:10
这是变量生命周期的问题,如果没用final修饰,则当方法调用完毕,方法弹栈,这个变量也就消失了,若此时匿名内部类对象还没有马上消失想用这个变量,就无法再使用了。当用final修饰之后,这个变量就进入了常量池,方法弹栈之后,变量依然存在,可以继续被匿名内部类对象使用。

在JDK1.7版本及其之前,final要自己写,从JDK1.8开始,final不用自己写,系统会默认加上。
作者: ma464526717    时间: 2016-2-20 00:41
因为内部类之可以访问自己内部的变量,成员变量加上final,就成了常量,在常量池中,所以可以访问用final修饰的变量。




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