Я должен добавить @Override аннотацию при реализации абстрактных методов в Java?

При переопределении невиртуального метода в Java, использовании @Override аннотация рекомендуется, но что, если я реализую абстрактный метод? Если я использую @Override затем также?

52
задан nabster 9 July 2019 в 06:23
поделиться

3 ответа

Я предпочитаю использовать @Override в этом случае, чтобы метод отмечался в подклассах при изменении суперкласса (либо полное удаление метода, либо изменение его сигнатуры и т. д.

Единственное реальное отличие состоит в том, что без аннотации, если метод в суперклассе / интерфейсе изменяется или удаляется, рассматриваемая реализация просто становится «нормальным» методом этого класса. Таким образом, вы должны добавить аннотацию, если вы реализуете метод исключительно для выполнения контракта; и вам, вероятно, не стоит добавлять его, если метод имеет смысл в вашем классе независимо от каких-либо реализованных интерфейсов или унаследованных абстрактных методов.

69
ответ дан 7 November 2019 в 09:16
поделиться

Да - опять же, он сообщает компилятору: «Я действительно хочу переопределить здесь метод. Если там нет соответствующего метода для переопределения, я сделал ошибку и хочу, чтобы мне об этом сказали! »

Лично мне жаль, что это просто аннотация, а не часть языка (как в C #), но это, конечно, преимущество ретроспективного анализа.

21
ответ дан 7 November 2019 в 09:16
поделиться

Да. Это рекомендовано Джошуа Блохом в «Эффективной Java».

14
ответ дан 7 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: