Java:如何从内部就地类调用超级方法
我有基类Foo和方法spam以及覆盖spam的类Bar。我需要在某个回调对象的方法中调用基类的spam,该回调对象已在适当位置定义:Java:如何从内部就地类调用超级方法,java,callback,overriding,super,Java,Callback,Overriding,Super,我有基类Foo和方法spam以及覆盖spam的类Bar。我需要在某个回调对象的方法中调用基类的spam,该回调对象已在适当位置定义: public class Foo { public void spam() { // ... } } public class Bar extends Foo { @Override public void spam() { objectWhichRequireCallback(new Callba
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类。可以从就地定义的对象调用超级方法吗
public class Bar extends Foo {
@Override
public void spam() {
objectWhichRequireCallback(new Callback {
@Override
public void onCallback() {
Bar.super.spam();
}
});
}
}
编辑:对不起。没有意识到方法名称是相同的。您可以在工具栏中为此创建包装函数
public class Bar...
public void mySuperSpam(){
super.spam();
}
试试这个:
Bar.super.spam()代码>
Bar.this.spam()代码>已编译,但它将导致无限递归,因为您调用的是相同的垃圾邮件()。您是否尝试过此.Foo.super.span()?这不应该是mySuperDuperSpam吗?:);-)我确信我在提问之前尝试过这种方法,但Eclipse给了我错误。我好像没有注意到。现在我再试一次。它起作用了!谢谢@AlistairIsrael——感谢您指出这个明显的错误。每个人都喜欢好的堆栈溢出。我是说,毕竟我们在这里。