Java: как вызвать супер метод из внутреннего класса на месте
У меня есть базовый класс 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();
}
});
}
}
Этот код не работает, потому что супер связан с Callback, а не с классом Bar. Можно ли вызвать супер метод из объекта, определенного на месте?
Ответы
Ответ 1
public class Bar extends Foo {
@Override
public void spam() {
objectWhichRequireCallback(new Callback {
@Override
public void onCallback() {
Bar.super.spam();
}
});
}
}
ИЗМЕНИТЬ: Извините. DId не понимает, что имена методов одинаковы.
Ответ 2
Вы можете создать для этого функцию обертки, в Bar
public class Bar...
public void mySuperSpam(){
super.spam();
}
Ответ 3
Попробуйте следующее: Bar.super.spam();
Bar.this.spam();
скомпилирован, но это вызовет бесконечную рекурсию, потому что вы вызываете тот же самый спам().