java:如何从内部就地类调用super方法

k2fxgqgv  于 2021-06-29  发布在  Java
关注(0)|答案(3)|浏览(581)

我有基类foo和spam方法,类bar覆盖spam。我需要在某个回调对象的方法中调用基类的spam,该回调对象在以下位置定义:

public class Foo {
    public void spam() {
        // ...
    }
}

public class Bar extends Foo {
    @Override
    public void spam() {
        objectWhichRequireCallback(new Callback {
            @Override
            public void onCallback() {
                super.spam();
            }
        });
    }
}

此代码不起作用,因为super与回调相关,而不是bar类。是否可以从就地定义的对象调用super方法?

wmomyfyw

wmomyfyw1#

试试这个:
Bar.super.spam(); Bar.this.spam(); 已编译,但它将导致无限递归,因为您调用了相同的spam()本身。

oalqel3c

oalqel3c2#

您可以为此创建一个 Package 器函数,在bar中

public class Bar...

    public void mySuperSpam(){
        super.spam();
    }
neskvpey

neskvpey3#

public class Bar extends Foo {
    @Override
    public void spam() {
        objectWhichRequireCallback(new Callback {
            @Override
            public void onCallback() {
                Bar.super.spam();
            }
        });
    }
}

编辑:对不起。没有意识到方法名是一样的。

相关问题