해당 클래스 내에서 클래스의 인스턴스를 참조하는 방법에는 두 가지가 있습니다. 예를 들면 :
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
를 참조하는 데 사용하고 다른 하나는 개체 필드 를 참조하는 데 사용 합니다. 이 두 참조의 차이점은 무엇입니까?
답변
이 경우 동일합니다. 이 Class.this
구문은 외부 클래스의 인스턴스를 참조해야하는 비 정적 중첩 클래스가있을 때 유용합니다.
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
정적이 아닌 참조에 유용합니다 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
.