黑马程序员技术交流社区

标题: 局部内部类问题 [打印本页]

作者: 程洋    时间: 2013-12-9 16:42
标题: 局部内部类问题
在毕老师讲解匿名内部类时提到过:局部内部类不可以调用它所在局部的变量,想要调用就必须被final修饰
,原因是什么,就是因为编译没通过?没听懂是什么原因导致的
作者: Forevery    时间: 2013-12-9 17:46
生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用,在作用范围外,而内部类却不会离开它所在方法就失去作用,它有更广的生命周期。所以在内部类中调用非final变量的时候,就会出现内部类引用非法。定义成final类型的话,java编译器则会在内部类内生成一个外部变量的拷贝,既可以保证内部类可以引用外部属性,又能保证值的唯一性。




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