Java中的“限定这个”构造是什么意思?

2022-09-01 07:36:16

Effective Java 中,“Item 22: Favor static member classes over nonstatic”中,Josh Bloch 说:

非静态成员类的每个实例都与其包含类的封闭实例隐式关联。在非静态成员类的实例方法中,可以调用封闭实例上的方法,也可以使用限定的 this 构造获取对封闭实例的引用。

他所说的“限定此构造”是什么意思?


答案 1

如果没有限定符,将递归。使用限定符,将改为调用封闭实例的方法。x()x()

class Envelope {
  void x() {
    System.out.println("Hello");
  }
  class Enclosure {
    void x() {
      Envelope.this.x(); /* Qualified*/
    }
  }
}

答案 2

非静态成员类具有对封闭类的实例的隐式引用。限定的此术语是指封闭类的实例。如果封闭类是 ,而内部类是 ,则可以将 from 的封闭引用寻址为 。ABABA.this


推荐