final在匿名内部类jdk7和jdk8的区别与共点
●jdk7开始匿名内部类在使用外部局部变量时,局部变量必须加final修饰,且不能修改局部变量
public class Test1 {
void test() {
}
public static void main(String[] args) {
final int age=18; //jdk7必须加final
Test1 t1=new Test1() {
void test() {
System.out.println(age);
}
};
t1.test();
}
}
●jdk8开始匿名内部类在使用外部局部变量时,局部变量可以不加final,但是也不能修改局部变量
public class Test1 {
void test() {
}
public static void main(String[] args) {
int age=18; //jdk8可以不加final修饰
Test1 t1=new Test1() {
void test() {
System.out.println(age); //不能对外部局部变量进行修改
}
};
t1.test();
}
}
●共同点:都不能对外部局部变量进行修改