原因:局部变量的生命周期与局部内部类的对象的生命周期的不一样
分析:匿名内部类中引用的外部变量受到外部线程的制约有其特定的生命周期,当外部的变量生命周期已经完结之后,内部类的线程还在运行。但它已经结束周期不可使用了。
如何解决这个外部变量生命周期已经结束而在内部类却还需要使用,就需要在外部变量中添加final修饰符,让它成为不可变的常量,不可变后其实内部类访问外部变量的本质是基于复制的,使用的这个变量就是外部变量的一个复制品,不会产生不一致问题,即使外部变量生命周期已经结束,内部的复制品依然可用。
遇到了这个问题,网上查询总结了一下。有不对还希望解释一下
这里是Yhh–一个初学Java的小菜鸡