Java:如何从内部就地类调用超级方法

2022-09-02 01:00:37

我有基类Foo与方法垃圾邮件和类Bar覆盖垃圾邮件。我需要在一些就地定义的回调对象的方法中调用基类的垃圾邮件

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 类。是否可以从就地定义的对象调用超级方法?


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

编辑:对不起。DIdn没有意识到方法名称是相同的。


答案 2

试试这个:Bar.super.spam();

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


推荐