Вы должны всегда аннотировать методы с помощью @Override
, если он доступен.
В JDK 5 это означает переопределение методов суперклассов, в JDK 6 и 7 это означает переопределение методов суперклассов и реализацию методов интерфейсов. Причина, как упоминалось ранее, заключается в том, что он позволяет компилятору перехватывать ошибки, когда вы думаете, что переопределяете (или реализуете) метод, но на самом деле определяете новый метод (другую сигнатуру).
Пример equals(Object)
против equals(YourObject)
является стандартным примером, но тот же аргумент может быть приведен для реализаций интерфейса.
Я полагаю, что причина, по которой нет необходимости комментировать методы реализации интерфейсов, заключается в том, что JDK 5 пометил это как ошибку компиляции. Если JDK 6 сделает эту аннотацию обязательной, это нарушит обратную совместимость.
Я не пользователь Eclipse, но в других IDE (IntelliJ) аннотация @Override
добавляется только при реализации методов интерфейса, если проект задан как проект JDK 6+. Я предположил бы, что Затмение похоже.
Однако я бы предпочел увидеть другую аннотацию для этого использования, возможно, аннотацию @Implements
.