首先要明确一点,如果变量在方法外面,是不用加final的,比如:
class Outer{
int num=3;
void method(){
class Inner{
void show(){
System.out.println("show.."+num);
}
}
Inner in=new Inner();
in.show();
}
}
class Test{
public static void main(String[]args){
//输出show..3
new Outer().method();
}
}
在JDK1.8以前,如果变量定义在方法内部,或者作为方法的形参,必须加final,这是为什么呢?
class Outer{
void method(){
//定义在内部,或者在形参
int num=3;
class Inner{
void show(){
System.out.println("show.."+num);
}
}
Inner in=new Inner();
in.show();
}
}
class Test{
public static void main(String[]args){