本帖最后由 杨佳名 于 2014-9-21 11:16 编辑
刚刚开始学习java,基础部分学到了内部类。今天遇到一个问题
class Outer
{
void method()
{
int y = 2;
class Inner
{
void show()
{
//y=5;
System.out.println("Inner y==="+y);
}
}
new Inner().show();
}
}
class InnerClassDemo3
{
public static void main(String[] args)
{
new Outer().method();
}
}
局部变量y没有定义final,可是编译运行都过了,跟视频描述的不一样,之后向学校学长问,也不知道怎么回事。后来,又下载一个JDK1.7,编译就出错了。查阅1.8新特性才知道,jdk1.8在编译的时候自动把局部内部类使用的局部变量改成final了。又试了一下,虽然没有定义final,但更改y的值后,编译同样出错。
虽然因为这个花了几个小时,但最终搞出来结果还是蛮开心的,激动的来发我第一个帖子。
黑马,我一定会来的! |
|