1

最後のスーパークラスまでメソッド呼び出しを伝播するために、スーパーでメソッドを再帰的に呼び出したいです。この疑似コードは私がやりたいことを示していますが、もちろんこれは Java でコンパイルされません。

public MyClass {

    protected void method() {

        // do something on this level

        if (super instanceof MyClass) {
            MyClass superLevel = (MyClass) super;
            superLevel.method();
        }
    }
}

この動作をどのように達成できますか?

4

2 に答える 2

3

以下を使用できます。

public class MySuperClass {
    protected void method() {
         // Whatever you want to do in super class
    }
}

public class MyClass extends MySuperClass {
    @Override
    protected void method() {
         // Whatever you want to do in this specific class

         // Call super.method
         super.method();
    }
}

クラスのチェーンでこのように使用できます。

于 2013-08-27T09:01:51.510 に答える
1

これらすべてのクラスも編集できるようになるまで、直接それを行うことはできません。それ以上ではなく、直接の親のメソッドのみを使用できます。

親を編集できる場合はsuper.method()、各レベルで呼び出します。

于 2013-08-27T09:01:40.687 に答える