【发布时间】:2012-02-27 12:14:31
【问题描述】:
我需要解释一下为什么下面的代码会编译失败(就范围和生命周期而言):
class ClassInMethod
{
public static void main(String[] args)
{
int local = 1;
class Inner
{
public void method()
{
System.out.println(local);
}
}
}
}
我认为这是因为: 任何使用但未在内部类中声明的局部变量都必须声明为“final”。因此,在本例中,“local”必须声明为 final,因为它的作用域和生命周期在 main 方法中结束(因此需要更改为:final int local = 1;)。
还有其他建议吗?
【问题讨论】:
-
家庭作业?你试过编译它吗? ;)
-
它是(因此是标签;);我有。但实际上我想我想通了——如果你对我的第二次尝试感兴趣,请在大约 30 秒内查看我的帖子!
-
此页面可能有助于解释为什么您需要将变量设为最终变量:techtracer.com/2008/04/14/…
标签: java scope inner-classes lifetime