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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

背包客

初级黑马

  • 黑马币:31

  • 帖子:15

  • 精华:0

© 背包客 初级黑马   /  2015-10-24 15:28  /  396 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

小弟初学java,在学习内部类的时候有一点小疑惑,还望论坛里的各位高人指点一下。
学习视频中说内部类在访问局部变量时,这个局部变量必须是要用final修饰的,否则会编译出错,但是我没用final修饰,编译和运行还是正常通过的啊?难道是因为jdk版本的原因?

视频中内部类示例.PNG (150.69 KB, 下载次数: 21)

视频中内部类示例

视频中内部类示例

我自己编的程序和运行结果.PNG (77.79 KB, 下载次数: 79)

我自己编写的程序和运行结果

我自己编写的程序和运行结果

4 个回复

倒序浏览
在JDK1.8中,好像如果你内部类访问局部变量,会自动帮你加final.你换一个低一点JDK版本,你就会发现不行了
回复 使用道具 举报
pp7803515 发表于 2015-10-24 16:59
在JDK1.8中,好像如果你内部类访问局部变量,会自动帮你加final.你换一个低一点JDK版本,你就会发现不行了 ...

貌似是这样的。。。
回复 使用道具 举报
对啊,你可以不加final 修饰,系统虚拟机在编译时会自动给其加上的。就如同抽象类中的final以及static也可以不加不是嘛
回复 使用道具 举报
chenguoyu520 发表于 2015-10-24 21:51
对啊,你可以不加final 修饰,系统虚拟机在编译时会自动给其加上的。就如同抽象类中的final以及static也可 ...

主要是老师的学习视频里说必须要加,所以有点疑惑
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马