3

我注意到我正在查看的一段代码,作者使用了:

class MainClass
{
  protected int someVar = 1;

  private SomeClass someClass = new SomeClass(this, new SomeActionListener() {
    protected void onAction() {
      MainClass.this.someVar ++;
    }
  });

  public MainClass()
  {
  }
}

请注意他过去MainClass.this如何获得“this”的正确上下文以将范围更改回MainClass. 我以前从未见过这样做过-有人可以解释吗?

4

1 回答 1

5

匿名实例绑定到创建它的实例的范围。因此它也可以访问其中的所有内容。this将引用匿名实例和MainClass.this创建匿名实例的实例。例如,如果该someClass成员被声明为static,您就不能使用MainClass.this.

于 2011-05-03T18:29:04.747 回答