次のコードがコンパイルに失敗する理由を説明する必要があります (スコープと有効期間の観点から)。
class ClassInMethod
{
public static void main(String[] args)
{
int local = 1;
class Inner
{
public void method()
{
System.out.println(local);
}
}
}
}
私はそれが理由だと思います: 内部クラスで使用されているが宣言されていないローカル変数は、「final」と宣言する必要があります。したがって、この例では、スコープと有効期間がメイン メソッド内で終了するため、'local' を final として宣言する必要があります (したがって、次のように変更する必要があります: final int local = 1;)。
他の提案はありますか?