-3

finalとnon-finalは同じスコープを持っているので、なぜVARIABLEがjavaでfinal変数として追加されるのか、そして、あるスコープでのみアクセスされる場合に、finalとして変数を追加するとどうなるのでしょうか。

public void game()
{
    final String str = "a" ;
        //String str ="a" ;

    class hollow 
    {
        public void game ()
        {
            System.out.println(str);
        }
    }
}
4

1 に答える 1

0

最終クラスと内部クラスhttp://en.wikipedia.org/wiki/Final_%28Java%29#Final_variables

匿名の内部クラスがメソッドの本体内で定義されている場合、そのメソッドのスコープでfinalと宣言されたすべての変数は、内部クラス内からアクセスできます。割り当てられると、final変数の値は変更できません。これにより、Javaコンパイラは実行時に変数の値を「キャプチャ」し、コピーをフィールドとして内部クラスに格納できます。外部メソッドが終了し、そのスタックフレームが削除されると、元の変数は失われますが、内部クラスのプライベートコピーはクラス自体のメモリに保持されます。

于 2013-03-05T12:12:58.227 に答える