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

2022-08-31 08:25:50

有两种方法可以引用该类中某个类的实例。例如:

class Person {
  String name;

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

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

一个用于引用对象字段,但另一个用于引用对象字段。这两个引用之间有什么区别?this.nameclassName.this


答案 1

在这种情况下,它们是相同的。当您有一个需要引用其外部类的实例的非静态嵌套类时,语法很有用。Class.this

class Person{
    String name;

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

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

    }
}

答案 2

仅当具有嵌套类时,此语法才变得相关:

class Outer{
    String data = "Out!";

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

        public String getOuterData(){
            return Outer.this.data; // will return "Out!"
        }
    }
}