1

コードがありますが、少し問題があります。

public class Out {
  int value = 7;
  void print() {
    int value = 9;//how to access this variable
    class Local {
      int value = 11;
      void print() {
        int value = 13;
        System.out.println("Value in method: " + value);
        System.out.println("Value in local class: " + this.value);
        System.out.println("Value in method of outer class: " + value);//here
        System.out.println("Value in outer class: " + Out.this.value);
      }
    }
  }
}

上記のコードは私の問題を説明しています。

4

2 に答える 2

2

それはクラスのメンバー フィールドではなく、ローカル メソッド変数であるため、Local のコンストラクターに渡す必要があるためです。

Andy が提案したように、別の名前で final にすることができます。この場合、コンパイラはそれを暗黙的に Local コンストラクターに渡し、Local のメンバー フィールドとして保存します (javap を使用して詳細を確認できます)。

于 2015-05-05T07:25:13.507 に答える