class Outer {
public void fun(){
int num = 90;
class Inner {
public void printNum(){
// num++;
System.out.println(num);
}
}
Inner in = new Inner();
in.printNum();
}
public static void main(String[] a){
Outer out = new Outer();
out.fun();
}
}
局部内部类在访问局部变量的时候,被访问的局部变量必须是 final 的,可是上面的代码却没有报错,并打印出了90。
当我把里面的注释代码去掉,试图修改局部变量值的时候才编译错误,提示需要加上final。
这是语法糖么,还是存在什么奥秘?
运行环境:jdk 1.8
JAVA 8 新特性,如果只是访问,未做修改,是不需要显性的声明final了,只是JVM编译源码的时候,还是会自动加上final