局部变量必须要被final修饰。原因是编译器实现上的困难:内部类对象的生命周期很有可能会超过局部变量的生命周期。 PS:在Java8之后,已经不需要final去坐修饰了 匿名内部类及如何访问外部变量 - 走看看