Баннер мобильный (1) Пройти тест

Lombok

Глоссарий

26 марта 2023

Поделиться

Скопировано

Содержание

    Lombok — это библиотека для сокращения кода в классах и расширения функциональности языка Java. Подключается к среде разработки (IDE) или инструменту сборки приложений Maven, Gradle в качестве плагина.

    Библиотека получила название в честь индонезийского острова Ломбок, расположенного недалеко от острова Ява. В переводе с индонезийского Lombok означает «перец чили»: по аналогии с приправой, библиотека призвана повысить качество Java-кода.

    Зачем нужен Lombok в Java

    Java — один из популярных языков, но у него есть несколько недостатков. Один из них — необходимость написания шаблонного кода для геттеров, сеттеров, метода toString() и так далее. Например, Kotlin и Scala также работают поверх JVM, но не нуждаются в шаблонном коде. Это причина их растущей популярности. Использование Lombok позволяет автоматически преобразовать объемный Java-код в оптимизированную и лаконичную структуру, характерную для перечисленных языков.

    Также плагин избавляет разработчика от ручного набора однотипных фрагментов кода и предотвращает появление ошибок. 

    Как работает Lombok

    Принцип работы библиотеки основан на использовании аннотаций, которые:

    • многократно сокращают шаблонный код;
    • экономят время разработчиков;
    • улучшают читаемость кода.

    Сравним «чистый» Java-код и код, оптимизированный с помощью библиотеки Lombok.

    Обычный Java-кодКод, использующий аннотации Lombok
    public class Employee {
    private Integer employeeId;
    private String name;
    private String company;
    private String emailId;
    public Employee() {}
    public Employee(Integer employeeId, String name, String company, String emailId) {
    super();
    this.employeeId = employeeId;
    this.name = name;
    this.company = company;
    this.emailId = emailId;
    }
    public Integer getEmployeeId() {
    return employeeId;
    }
    public void setEmployeeId(Integer employeeId) {
    this.employeeId = employeeId;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getCompany() {
    return company;
    }
    public void setCompany(String company) {
    this.company = company;
    }
    public String getEmailId() {
    return emailId;
    }
    public void setEmailId(String emailId) {
    this.emailId = emailId;
    }
    @Override public String toString() {
    return «Employee [» +
    «employeeId=» + employeeId + «, name=» + name +
    «, » +
    » company=» + company + «, emailId=» + emailId +
    «]»;
    }
    }
    import lombok.AllArgsConstructor;
    import lombok.Getter;
    import lombok.NoArgsConstructor;
    import lombok.Setter;
    import lombok.ToString;
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString
    @Getter
    @Setter
    public class Employee {
    private Integer employeeId;
    private String name;
    private String company;
    private String emailId;
    }

    Использование Lombok сокращает код в три раза.

    Плагин Lombok в Intellij IDEA

    Аннотации в Lombok

    Наиболее полезные аннотации в библиотеке:

    1. @Getter и @Setter — предоставляют геттеры и сеттеры для поля. Могут использоваться как на уровне поля, так и на уровне класса.
    2. @NoArgsConstructor — используется для создания конструктора без аргументов.
    3. @AllArgsConstructor — генерирует параметризованный конструктор, который принимает один параметр для каждого поля и инициализирует их с его помощью. Аннотация необходима, если нужно создать объект класса, передав начальные значения полей в конструктор.
    4. @ToString — переопределяет метод toString() и создает для него реализацию по умолчанию. Она выводит имя класса и поля по порядку, разделяя их запятыми. Можно пропустить отдельные поля, если аннотировать их с помощью @ToString.Exclude.
    5. @EqualsAndHashCode — применяется для переопределения методов equals() и hashCode().
    6. @Data — объединяет аннотации @ToString, @Getter, @Setter, @EqualsAndHashCode и @RequiredArgsConstructor в одну. Предоставляет весь код, который обычно используется в классах моделей, например, геттеры для всех полей, сеттеры для всех нефинальных полей, реализацию по умолчанию для toString(), equals() и hashCode(), а также конструктор, который инициализирует все поля класса. 

    Другие термины на «L»

    Все термины

    Поделиться

    Скопировано

    0 комментариев

    Комментарии