Как в Eclipse 3.4.1 с использованием JDK1.6.0_10 активировать предупреждение об отсутствующей аннотации @Override в методе, реализующем метод интерфейса?
В окне настроек эта опция:
Java > Compiler > Errors / Warnings > Annotations > Missing '@Override' annotation
отлично работает с отсутствующими аннотациями к методам, которые переопределяют метод суперкласса, но ничего не делает для методов интерфейса.
Я должен был упомянуть об этом. Добавил в вопрос версию Java (6).





Возможно, мне что-то не хватает, но методы интерфейса уже должны быть реализованы классами реализации.
Компилятор выдаст ошибку, если интерфейс реализован не полностью.
Да, но вы все равно этого хотите. См. stackoverflow.com/questions/212614/…
Ах да, спасибо за указатель. Должно быть, я это пропустил, так как я все еще использую Java 1.5 на Mac OSX :-)
Допускаю то, что я сказал в другой ветке. По-видимому, это не вариант компилятора, а проблема с версией совместимости Java: если ваша версия совместимости 5, вы не сможете аннотировать методы реализации интерфейса. Если ваша версия совместимости - 6, вы сможете это сделать.
Однако я не думаю, что есть способ заставить Eclipse генерировать ошибку, если вы не аннотируете каждый реализованный метод. От эта страница:
Missing '@Override' annotation: When enabled, the compiler will issue an error or a warning whenever it encounters a method overriding another implemented method, and the '@Override' annotation is missing.
Я использую java 6 (отредактировал вопрос, чтобы прояснить это. Должен был сделать это раньше).
знаете ли вы, можно ли это сделать в настоящее время в eclipse 4.4.1?
В Eclipse 3.4.1 это невозможно. Это известная проблема. См. Эту страницу отчета об ошибке для получения дополнительной информации.
Настройка совместимости на 1,6 вместо 1,5 у меня работала: Eclipse Java EE IDE для веб-разработчиков.
Идентификатор сборки: 20100218-1602
Java 5 и Java 6 имеют разные ожидания в отношении аннотаций @Override в реализациях интерфейса. Я не помню, как это повлияет на Eclipse, но я знаю, что это так.