Большая часть шаблонного кода одинакова для большинства приложений, которые мы пишем.
Как что? 🧐
- Добытчики
- Сеттеры
- Конструкторы
- Шаблон строителя
- и многое другое…
Разве не было бы неплохо, если бы кто-нибудь позаботился об этой работе за нас? Именно здесь Lombok представляет себя.
Что он делает? 👀
Он генерирует байт-код для этих общих задач (геттеры, сеттеры и т.д.) и помещает их в наши файлы .class , которые делают их пригодными для использования в коде, который мы пишем.
Как? 🔧
Нам нужно добавить зависимость Lombok в нашу сборку Maven. Затем нам просто нужно аннотировать нужные классы, поля с некоторыми аннотациями Lombok.
Давайте посмотрим на какой-нибудь код! 👩 Персональный компьютер
Нет Ломбока 🧟
public class Human { private int id; private String name; private int ageInYears; public Human() { } public Human(int id, String name, int ageInYears) { this.id = id; this.name = name; this.ageInYears = ageInYears; } public int getId() { return id; } public String getName() { return name; } public int getAgeInYears() { return ageInYears; } public void setName(String name) { this.name = name; } public void setAgeInYears(int ageInYears) { this.ageInYears = ageInYears; } // Builder pattern public Human id(int id){ this.id = id; return this; } public Human name(String name){ this.name = name; return this; } public Human ageInYears(int ageInYears){ this.ageInYears = ageInYears; return this; } @Override public String toString(){ return String.format("Human(id=%s, name=%s, ageInYears=%s)", this.id, this.name, this.ageInYears); } }
Ломбок 🤴
import lombok.*; @Getter @Setter @AllArgsConstructor @NoArgsConstructor @Builder @ToString public class Human { @Setter(AccessLevel.NONE) private int id; private String name; private int ageInYears; }
Зависимость Maven выглядит следующим образом
org.projectlombok lombok 1.18.16 provided
Примечание: часть версии будет меняться в зависимости от последней версии Lombok.
Что только что произошло? 🕵️♀️ 🕵 ️
- мы использовали аннотации для создания
- Добытчики
- Сеттеры
- Конструкторы
- Шаблон строителя
- Реализация toString
Мы также можем внести изменения в некоторые аннотации, например, в параметр для поля id |/.
- Мы устанавливаем его уровень доступа равным None, что означает, что для него не нужно создавать сеттер.
Стоило ли оно того? Принципиальная схема
Мы написали 52 линии, когда не используется Ломбок. Мы написали 8 линии при использовании Ломбока.
Ломбок помог нам уменьшить размер нашего кода почти в 4 раза. Эти цифры могут вырасти еще больше, если в наших классах будет больше переменных.
В Ломбоке есть гораздо больше аннотаций, которые предлагают массу помощи, чтобы просмотреть их все, посетите их веб-сайт .
Вывод 👇🏾
Lombok помогает нам сосредоточиться на нашем бизнес-коде и не беспокоиться о мелких деталях геттеров/сеттеров/конструкторов/общих шаблонов проектирования и других конструкций Java.
Код 👨🏽 💻
GitHub
Оригинал: “https://dev.to/jarjanazy/speed-up-your-java-coding-using-lombok-4b53”