我的基类 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 与 Callback 相关,而非 Bar 类。是否可以从就地定义的对象调用super方法?
答案 0 :(得分:29)
public class Bar extends Foo {
@Override
public void spam() {
objectWhichRequireCallback(new Callback {
@Override
public void onCallback() {
Bar.super.spam();
}
});
}
}
编辑:抱歉。 DId没意识到方法名称是一样的。
答案 1 :(得分:3)
您可以在Bar
中为此创建包装函数public class Bar...
public void mySuperSpam(){
super.spam();
}
答案 2 :(得分:2)
试试这个:Bar.super.spam();
Bar.this.spam();
已编译但会导致无限递归,因为您调用的是相同的spam()本身。