我需要解釋爲什麼下面的代碼將無法編譯(在範圍和壽命方面):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