JarryHorse 发表于 2015-4-8 17:37
会的,a是局部变量,内部类不能访问局部变量,除非a是final修饰的
zouxx 发表于 2015-4-8 19:28
会报错的。
doomsday 发表于 2015-4-8 19:14
你的JDK什么版本的 我的是 JDK8 怎么不报错呢
突然世界晴 发表于 2015-4-8 20:10
不会报错的,新版会默认a被final修饰
doomsday 发表于 2015-4-8 22:38
如果默认为final修饰 那么改成a++编译,为什么会报错“从内部类引用的本地变量必须是最终变量或实际上的 ...
JarryHorse 发表于 2015-4-8 22:28
我JDK8,这跟JDK版本无关,这是Java底层机制决定的,方法在栈中运行,内部类对象存放在堆中,存在方法运 ...
君嘘 发表于 2015-4-8 22:40
因为被final修饰的变量不能改变啊。
异常说明不是很清楚了么,最终变量嘛。 你a++不是等于修改变量么。。 ...
doomsday 发表于 2015-4-8 22:47
你没看明白提示吗?意思是要把a申明为最终,意思是还没申明为final
如果你把a修饰为final的话 a++会提示“ ...
JarryHorse 发表于 2015-4-8 22:28
我JDK8,这跟JDK版本无关,这是Java底层机制决定的,方法在栈中运行,内部类对象存放在堆中,存在方法运 ...
君嘘 发表于 2015-4-8 23:03
从内部类引用的本地变量必须是最终变量或实际上的最终变量
你从这句话看出了什么,不是已经说明了a必须被f ...
doomsday 发表于 2015-4-8 23:10
用你的话说,这个就应该提示“无法为最终变量a分配值”
我反编译class后a并没有被final修饰
...
君嘘 发表于 2015-4-8 23:09
能编译的 ,而且能运行。保持楼主的代码不变,在show方法上new个B对象调用xx方法。打印结果是1没错 ...
doomsday 发表于 2015-4-8 22:44
我用eclips和直接dos窗口下编译都是一样的
图片1.png (20.16 KB, 下载次数: 92)
JarryHorse 发表于 2015-4-8 23:36
我的是这样的,老毕视频中第9天第4节的第4分20秒开始,有对这个知识点的讲解
...
JarryHorse 发表于 2015-4-8 23:26
哥们儿你这就太不厚道了,如果您理解得还不是很深入就得好好琢磨琢磨了,如果你理解了还说出这话我就当你 ...
JarryHorse 发表于 2015-4-8 22:28
我JDK8,这跟JDK版本无关,这是Java底层机制决定的,方法在栈中运行,内部类对象存放在堆中,存在方法运 ...
doomsday 发表于 2015-4-9 00:28
你确定你的eclipse支持jdk8吗?你试试在dos窗口下编译呢
君嘘 发表于 2015-4-9 01:05
java 8新特性。
某段java8新特新的描述。
在Java8以前,如果要在内部类访问外部对象的一个本地变量,那么 ...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |