A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程洋 中级黑马   /  2013-12-9 16:42  /  1004 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在毕老师讲解匿名内部类时提到过:局部内部类不可以调用它所在局部的变量,想要调用就必须被final修饰
,原因是什么,就是因为编译没通过?没听懂是什么原因导致的

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

1 个回复

倒序浏览
生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用,在作用范围外,而内部类却不会离开它所在方法就失去作用,它有更广的生命周期。所以在内部类中调用非final变量的时候,就会出现内部类引用非法。定义成final类型的话,java编译器则会在内部类内生成一个外部变量的拷贝,既可以保证内部类可以引用外部属性,又能保证值的唯一性。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马