0

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

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

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

4

2 回答 2

5

原因是本地内部类的实例可能会从方法返回,并在方法返回后最后返回。在这种情况下,本地方法变量在您访问它们时将不存在。
一旦将它们定义为 final,它们实际上是恒定的,因此即使在之后也可以安全访问。签出不能引用内部类中的非最终变量以获取更多详细信息。

于 2012-12-08T07:46:37.670 回答
4

您在谈论匿名课程。局部变量(仅)必须被final它们的实现引用,因为代码可能在未知的执行帧中执行,也可能在另一个线程中执行,所以编译器唯一希望使用一个值是它在匿名时是否是一个常量类被实例化(声明) - 即如果变量是final.

于 2012-12-08T07:53:09.797 回答