为什么Java内部类需要外部类的变量是最终的?

Rit*_*hik 0 java final

可能重复:
Java - 内部类和局部变量
如何将变量标记为final允许内部类访问它们?

Local Inner类不仅可以访问实例变量,还可以访问方法的局部变量(在其中定义它们),但必须声明局部变量final.

为什么final在这种情况下必须声明局部变量?

Avn*_*evy 5

原因是可以从方法返回本地内部类的实例,并在方法返回之后返回.在这种情况下,访问它们时,本地方法变量将不存在.
一旦你将它们定义为final,它们实际上是不变的,因此即使之后也可以安全访问.对于更多详细信息,check out 不能引用内部类中的非final变量.