OpenJDK @Overrid отсутствует проблема
Есть ли какой-то случай, когда в OpenJDK 1.7.0_45 класс Derived переопределяет метод базового класса, но без аннотации @Override, а во время выполнения экземпляр производного класса вызывает метод базового класса?
class Base {
public f() {
}
}
class Derived {
public f() {
}
}
метод производного класса не вызывает метод базового класса.
Кстати, тот же код хорошо работает на Oracle JDK1.7.
2 ответа
Нет, как вы можете видеть в Javadocs, @Override имеет сохранение SOURCE и работает только как гарантия времени компиляции. Байт-код не будет отличаться. См. Также Как определить метод переопределения в байт-коде Java?
Я не уверен, правильно ли я понимаю вопрос, но переопределенная аннотация не определяет, какой метод вызывается во время выполнения. Так что вы можете вызывать метод baseclass. Просто вызовите super.f().