Java:在匿名操作处理程序中获取"this"的正确上下文

And*_*Hin 3 java android andengine

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

class MainClass
{
  protected int someVar = 1;

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

  public MainClass()
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

注意他是如何使用MainClass.this'this'的正确上下文来改变范围的MainClass.我以前从未见过这个 - 有人可以解释一下吗?

Ste*_*han 5

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