Если у нас есть @Override, почему нет @Implementation или @ Implements`? - PullRequest
0 голосов
/ 30 ноября 2011

Мне любопытно, почему у нас есть аннотация @Overrides, но нет аналогичной идиомы для интерфейсов (таких как @Implements или @Implementation). Похоже, что это была бы полезная функция, поскольку вы могли бы требовать, чтобы интерфейс, который вы реализуете, был значением аннотации.

Было ли это сознательным решением или просто пропущено?

Я нашел этот вопрос , но, похоже, не обсуждается, почему не было создано отдельной аннотации.

Ответы [ 3 ]

4 голосов
/ 30 ноября 2011

В большинстве случаев вам не нужна такая аннотация, потому что, если вы не реализуете интерфейс, вы получите ошибку во время компиляции. Единственный случай, если класс abstract. Там это может быть полезно. Но опять же у вас есть @Override, поэтому новая аннотация, вероятно, бесполезна.

0 голосов
/ 30 ноября 2011

Аннотация @Override - это просто маркер для компилятора.Он существует для того, чтобы компилятор мог генерировать предупреждения, если намерения разработчика, возможно, запутаны.Javadoc выглядит следующим образом:

Указывает, что объявление метода предназначено для переопределения объявления метода в суперклассе.Если метод аннотируется этим типом аннотации, но не переопределяет метод суперкласса, компиляторы должны генерировать сообщение об ошибке.

Любая аннотация @Implements, вероятно, будет обеспечивать только ту же функцию, поэтомуутилита будет ограничена компилятором.

0 голосов
/ 30 ноября 2011

Я думаю, что когда вы реализуете interface (например, public class AClass implements AInterface), вы используете это ключевое слово implements, которое достаточно информации, чтобы дать понять, что даже если вы используете @Override, метод на самом деле реализация абстрактного метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...