다음과 같은 클래스 구조가 있습니다.
public class OuterClass {
private static class InnerClass {
public void someMethod() {
OtherClass.otherMethod(<???>);
}
}
다른 클래스의 정적 메서드를 나타냅니다 OtherClass
.
public class OtherClass {
public static void otherMethod(OuterClass) {
....
}
}
나는 <???>
. 내부 정적 클래스 내에서 외부 클래스의 인스턴스를 어떻게 참조합니까? 내가하고 싶은 this
것은 OuterClass
.
분명히 OuterClass
다음 유형 의 객체가 필요합니다 .
public void someMethod() {
OuterClass oc = new OuterClass();
OtherClass.otherMethod(oc);
}
내부 클래스가 정적이 아닌 경우 다음을 수행 할 수 있습니다.
//remove static here
private class InnerClass {
public void someMethod() {
OtherClass.otherMethod(OuterClass.this);
}
}
중첩 된 클래스 ( 정적 및 비 정적) 의 차이점을 알아야합니다 . 정적 중첩 클래스는 다른 클래스와 마찬가지로 단순히 다른 클래스 내에 정의 된 클래스입니다 (보통 캡슐화 원칙 때문에). 내부 정적 클래스 인스턴스에는 외부 클래스 인스턴스에 대한 지식이 없습니다.
중첩 된 내부 클래스 (비 정적)는 내부 클래스의 객체가 외부 클래스의 인스턴스 내에 존재하도록 요구합니다. 그렇기 때문에 OuterClass.this
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다