Java中Class.this和this有什么区别

| 有两种方法可以在该类中引用该类的实例。例如:
class Person {
  String name;

  public void setName(String name) {
    this.name = name;
  }

  public void setName2(String name) {
    Person.this.name = name;
  }
}
一个使用
this.name
引用对象字段,而另一个使用
className.this
引用对象字段。这两个参考之间有什么区别?     
已邀请:
在这种情况下,它们是相同的。当您有一个非静态嵌套类需要引用其外部类的实例时,3语法非常有用。
class Person{
    String name;

    public void setName(String name){
        this.name = name;
    }

    class Displayer {
        String getPersonName() { 
            return Person.this.name; 
        }

    }
}
    
仅当您具有嵌套类时,此语法才有意义:
class Outer{
    String data = \"Out!\";

    public class Inner{
        String data = \"In!\";

        public String getOuterData(){
            return Outer.this.data; // will return \"Out!\"
        }
    }
}
    
您只需要对内部类使用className.this。如果您不使用它们,请不要担心。     
Class.this
对于引用非静态ѭ7很有用。 要实例化非静态
InnerClass
,必须首先实例化
OuterClass
。因此,非静态
InnerClass
将始终引用其
OuterClass
,并且所有
InnerClass
可以使用
OuterClass
的字段和方法。
public static void main(String[] args) {

        OuterClass outer_instance = new OuterClass();
        OuterClass.InnerClass inner_instance1 = outer_instance.new InnerClass();
        OuterClass.InnerClass inner_instance2 = outer_instance.new InnerClass();
        ...
}
在此示例中,两个ѭ15都是从相同的ѭ16实例化的,因此它们对ѭ16的引用相同。     

要回复问题请先登录注册