ClassName.this的目的是什么,除了消歧之外?

dco*_*cow 14 java android this

我已经看到ClassName.this在SO和其他地方使用很多Android代码(而不是简单的this关键字)来引用类的当前实例.我理解你可能决定this在类名前加上以消除任何歧义,但根据我的经验,这样做通常是不必要的,因为实际上只有一件事this可以引用 - 代码执行的类的当前实例是否有其他我忽略的建议将this关键字与类名称对接是更好的做法,或者在某些情况下它实际上是必要的?

Eng*_*uad 27

要从内部类或匿名类中访问封闭类的实例,您需要使用以下语法:

EnclosingClass.this.someMethod();
Run Code Online (Sandbox Code Playgroud)

  • 如果内部类中也存在`someMethod()`则不行. (8认同)

Com*_*are 10

实际上只有一件事是指的.

那是不对的.

还有其他我忽略的东西会建议将这个关键字与类名称接口,这总是更好的做法,还是有必要的情况?

分别是和是.特别是,ClassName.this需要从内部类到达外部类的实例this.

例如:

  myButton.setOnClickListener(new Button.OnClickListener() {  
    public void onClick(View v) {
          startActivity(new Intent(MyActivity.this, MyOtherActivity.class));
        }
     });
Run Code Online (Sandbox Code Playgroud)

在这里,使用this而不是因为MyActivity.this编译错误而失败,抱怨这Button.OnClickListener不是Intent构造函数的有效第一个参数.MyActivity.this返回this那是MyActivity包围实例Button.OnClickListener的实例.