마지막 수퍼 클래스를 호출하는 메서드를 전파하기 위해 super에서 메서드를 재귀 적으로 호출하려고합니다. 이 의사 코드는 내가하고 싶은 것을 알려주지 만, 물론 자바에서는 컴파일되지 않습니다.수퍼 클래스에서 재귀 함수 호출
public MyClass {
protected void method() {
// do something on this level
if (super instanceof MyClass) {
MyClass superLevel = (MyClass) super;
superLevel.method();
}
}
}
어떻게이 동작을 수행 할 수 있습니까?
이 코드는 수퍼 클래스에 있어야합니다. 수퍼 클래스에서는'if (MyClass의이 인스턴스)'를 쓸 수 있지만 IMHO에서는 디자인 결함을 나타냅니다. 수퍼 클래스는 서브 클래스를 알지 못합니다. –
유일한 옵션은 각 레벨에서'super.method()'호출을 추가하는 것입니다. 'super'를 사용하여 직접 슈퍼 클래스 메서드 만 호출 할 수 있습니다. –