Обычно переопределенный метод может быть вызван с помощью super. Например:
public class SuperClass {
public void something() {
out("called from super");
}
}
public class SubClass extends SuperClass {
@Override
public void something() {
out("called from sub");
super.something(); // This is fine
}
public static void main(String[] args) {
new SubClass().something(); // Calls both methods
}
}
Но я хочу вызвать метод super.something () из другого класса:
public class SubClass2 extends SuperClass {
@Override
public void something() {
out("called from sub2");
new DecidingClass().maybeCallSuperSomething(this);
}
public static void main(String[] args) {
new SubClass2().something();
}
}
public class DecidingClass {
public void maybeCallSuperSomething(SuperClass visitor) {
boolean keepGoing = true;
// Do some work, maybe set keepGoing to false
// ...
if (keepGoing) {
// How do I call the Overridden method?
visitor.something() // Causes recursive loop
// visitor.super.something() ????
}
}
}
Возможно ли это? У меня есть обходной путь, но он немного неряшливый.