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().

Другие вопросы по тегам