Авто удаление геттер-сеттеров с ломбок?

У меня есть проект. Я не пользуюсь Ломбоком. Я использую созданные вручную геттеры и сеттеры.

Теперь я хочу импортировать Ломбок. После того, как я импортирую, я буду использовать для всех сущностей.

Нужно ли вручную добавлять @Data всем сущностям? И я должен удалить все объекты вручную? Нет ли другого способа автоматически конвертировать эти классы?

Я не мог найти такие вопросы, как это:

https://www.google.com/search?q=lombok+automatic+remove+getter+site:stackru.com&num=100&safe=off&sa=X&ved=2ahUKEwjXyqKT39bfAhXysYsKHWw4Ah0QrQIoBDAKegQIPxAM&biw=1497&bih=762

4 ответа

В IntelliJ IDEA с установленным плагином Lombok у вас должна быть эта функция:

  1. Перейдите к целевому классу
  2. Рефакторинг меню | Ломбок | @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 также.

Другие вопросы по тегам