有两种方法可以引用该类中的类实例。例如:
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
来引用对象字段。这两个参考文献有什么区别?
答案 0 :(得分:149)
在这种情况下,它们是相同的。当你有一个非静态嵌套类需要引用它的外部类的实例时,Class.this
语法很有用。
class Person{
String name;
public void setName(String name){
this.name = name;
}
class Displayer {
String getPersonName() {
return Person.this.name;
}
}
}
答案 1 :(得分:82)
只有嵌套类时才会使用此语法:
class Outer{
String data = "Out!";
public class Inner{
String data = "In!";
public String getOuterData(){
return Outer.this.data; // will return "Out!"
}
}
}
答案 2 :(得分:13)
您只需要将className.this用于内部类。如果您不使用它们,请不要担心。
答案 3 :(得分:4)
Class.this
可用于引用非静态OuterClass
。
要实例化非静态InnerClass
,必须先实例化OuterClass
。因此,非静态InnerClass
将始终具有其OuterClass
和所有的引用
OuterClass
可以使用InnerClass
的字段和方法。
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();
...
}
在此示例中,Innerclass
都是从同一Outerclass
实例化的,因此它们都对Outerclass
具有相同的引用。