32

アイテム「アイテム22:非静的よりも静的メンバークラスを優先する」内のEffective Javaで、 JoshBlochは次のように述べています。

非静的メンバークラスの各インスタンスは、それを含むクラスの包含インスタンスに暗黙的に関連付けられます。非静的メンバークラスのインスタンスメソッド内で、囲んでいるインスタンスでメソッドを呼び出すか、修飾されたthis構造を使用して囲んでいるインスタンスへの参照を取得できます。

彼はQualifiedThisConstructとはどういう意味ですか?

4

2 に答える 2

41

修飾子がないと、x()再帰します。修飾子を使用すると、代わりに、囲んでいるインスタンスのx()メソッドが呼び出されます。

class Envelope {
  void x() {
    System.out.println("Hello");
  }
  class Enclosure {
    void x() {
      Envelope.this.x(); /* Qualified*/
    }
  }
}
于 2012-06-30T19:40:08.057 に答える
11

非静的メンバークラスには、それを囲むクラスのインスタンスへの暗黙の参照があります。修飾この用語は、囲んでいるクラスのインスタンスを指します。囲んでいるクラスがAで、内部クラスがである場合、 fromの囲んでいる参照をとしてBアドレス指定できます。ABA.this

于 2012-07-01T00:51:55.767 に答える