我们知道,内部类与外部类的级别是相同的,内部类并不会因为在方法中就随着方法的执行完毕而被销毁,当外部类方法结束时,局部变量会销毁,但是内部类并不会被销毁,此时内部类对象还存在,这时候我们发现内部类对象就访问了一个不存在的变量,这就会产生矛盾,此时就必须使用final变量,此时final变量可以理解为一种“复制”,使这个变量还存在。
下面用代码来解释:
public class Test {
public static void main(String[] args) {
Test test=new Test();
test.hjx(1);
}
public void hjx( int a){
int b=1;
//匿名内部类
new Thread(){
public void run(){
System.out.println(a);
System.out.println(b);
}
}.start();
}
}
在IDEA中编写匿名内部类的代码,注意对于局部变量此时我没有加final,运行后结果为1 1,结果居然没有问题