Авто удаление геттер-сеттеров с ломбок?
У меня есть проект. Я не пользуюсь Ломбоком. Я использую созданные вручную геттеры и сеттеры.
Теперь я хочу импортировать Ломбок. После того, как я импортирую, я буду использовать для всех сущностей.
Нужно ли вручную добавлять @Data
всем сущностям? И я должен удалить все объекты вручную? Нет ли другого способа автоматически конвертировать эти классы?
Я не мог найти такие вопросы, как это:
4 ответа
В IntelliJ IDEA с установленным плагином Lombok у вас должна быть эта функция:
- Перейдите к целевому классу
- Рефакторинг меню | Ломбок | @Data по умолчанию
Таким образом, вы можете проводить рефакторинг своих классов один за другим. Я не знаю, существуют ли какие-либо инструменты пакетного рефакторинга для Lombok.
Если вы заинтересованы в пакетном рефакторинге, пожалуйста, добавьте номер 574 в трекер плагинов Lombok. Или даже внести код в этот проект.
Поскольку у сущности в среднем может быть десять полей, для каждого класса нужно удалить много текста. Используя стандартное форматирование и одну строку между методами, эти 10 геттеров и десять сеттеров означают 10 * 2 * 4 = 80
строк в классе. Все, что вам нужно добавить один @Data
аннотаций.
Поэтому я бы сконцентрировался на удалении и напишу простое регулярное выражение, распознающее тривиальные геттеры и сеттеры. Добавление аннотации ко всем измененным файлам - это то, что я бы с удовольствием сделал вручную даже для десятков объектов. Забыть это не проблема, так как это приводит к очевидным ошибкам во время компиляции.
Тривиальное непроверенное регулярное выражение для тривиальных геттеров:
[ \t]+public [\\w<,> ]+ get[A-Z](\\w+)\\(\\)\\s*\\{\\s*return\\s+[a-z]\\1;\\s*\\}\\s*\n
Такое регулярное выражение не может быть идеальным (например, когда меняются массивы, когда возвращаются массивы или когда вы используете нестандартное форматирование или именование; это легко исправить, но могут возникнуть и другие проблемы). Тем не менее, он может делать свою работу.
Мое регулярное выражение не допускает комментариев в теле метода, но я бы не назвал прокомментированный метод получения тривиальным.
Лучший способ использовать IntelliJ IDEA - использовать сочетание клавиш Ctrl + Shift + A и выбрать нужный рефакторинг.
Я не знаю ни одной IDE, которая могла бы преобразовать весь проект, поэтому я написал инструмент командной строки на основе JavaParser: lomboker. Пока что он не реализует преобразование в, а все шаги к нему: удаление геттеров, сеттеров, noargsconstructors, toString и EqualsAndHash и добавление соответствующих аннотаций и их импорта. Таким образом, его должно быть довольно легко расширить, чтобы покрыть
@Data
также.