我需要解释为什么下面的代码将无法编译(在范围和寿命方面):Java的范围和使用寿命(内部类)
class ClassInMethod
{
public static void main(String[] args)
{
int local = 1;
class Inner
{
public void method()
{
System.out.println(local);
}
}
}
}
我认为这是因为: 任何局部变量使用但未在内部类中声明的内容必须声明为“最终”。因此,在本例中,'local'必须声明为final,因为它的范围和生命周期在主方法内结束(因此需要更改为:final int local = 1;)。
任何其他建议?
家庭作业?你有没有试过编译它? ;) – Jonathan 2012-02-05 21:07:36
它是(因此标签;);我有。但实际上,我认为我想到了 - 如果你对我的第二次尝试感兴趣,请在〜30秒内查看我的帖子! – tommy1370 2012-02-05 21:14:24
这个页面可能有助于解释_why_你需要变量是最终的:http://techtracer.com/2008/04/14/mystery-of-accessibility-in-local-inner-classes/ – DNA 2012-02-05 21:15:57