Почему Eclipse не добавляет аннотации @Override при рефакторинге «Генерировать методы делегирования»?

#java #eclipse #refactoring #code-generation #eclipse-jdt

#java — язык #затмение #рефакторинг #генерация кода #eclipse-jdt #java #eclipse

Вопрос:

В Eclipse, если я попытаюсь применить рефакторинг «Генерировать методы делегирования» к классу Java следующим образом:

 class Foo implements Bar {
   Bar bar;
}
  

Eclipse не генерирует @Override аннотации для сгенерированных методов. Это ошибка или для этого есть веская причина?

Ответ №1:

Это не отвечает на ваш вопрос о том, почему не добавляется @Override аннотация при генерации методов делегирования, но вы можете добавить действие сохранения, которое сделает это за вас при сохранении файла. Перейдите к

 Window -> Preferences -> Java -> Editor -> Save Actions
  

Действия сохранения Eclipse

Обратите внимание на записи для @Override в Additional actions разделе. Если у вас их не хватает, нажмите Configure... кнопку, выберите Missing Code вкладку и выберите эти параметры:

введите описание изображения здесь

Если вы хотите массово добавлять аннотации ко всему проекту или пакету, выберите проект или пакет (или несколько), щелкните правой кнопкой мыши и выберите Исходный код> Очистить…

В диалоговом окне очистки вы можете настроить пользовательский профиль, который включает добавление отсутствующих аннотаций.

Ответ №2:

Нет веской причины, но это не «ошибка», сама по себе; просто недостаток. Вероятно, рефакторинг просто старше, чем @Override — старше аннотаций в целом, конечно — и никогда не обновлялся.

Комментарии:

1. Спасибо, Эрнест, я сообщил об этом в Bugzilla из Eclipse.

2. Отчет Bugzilla можно найти здесь .

Ответ №3:

Иногда настройки в Window -> Preferences -> Java -> Editor -> Save Actions вызывают нежелательные эффекты, особенно для XML-файлов при разработке приложений для Android (был там, испытал это). ИМХО, лучшее решение — использовать 1 или щелкнуть правой кнопкой мыши по пакету (или классу и т.д.), А затем выбрать Source -> Очистить, чтобы добавить все ваши недостающие аннотации @Override.