ClassName.this beyond disambiguation 的目的是什么?

2022-09-03 09:25:53

我已经看到SO和其他地方的许多Android代码(而不是简单的关键字)用于引用类的当前实例。我知道你可能会决定用类名来开头,以消除歧义,但根据我的经验,这样做通常是不必要的,因为实际上只能有一件事 - 代码正在执行的类的当前实例。我是否忽略了其他一些东西,表明在关键字前面加上类名总是更好的做法,或者是否有任何情况实际上是必要的?ClassName.thisthisthisthisthis


答案 1

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

EnclosingClass.this.someMethod();

答案 2

这真的只能有一件事。

这是不正确的。

我是否忽略了其他一些东西,表明在this关键字前面加上类名总是更好的做法,或者是否有任何情况是必要的?

分别是和是。特别是,需要从内部类获得 的外部类实例。ClassName.thisthis

例如:

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

在这里,使用而不是 will 会失败,并出现编译错误,抱怨这不是构造函数的有效第一个参数。 返回 that 是包含该实例的实例。thisMyActivity.thisButton.OnClickListenerIntentMyActivity.thisthisMyActivityButton.OnClickListener