Lombok

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»

Laravel
LDAP
LFU
Linux
LRU

Все термины

Освойте новую профессию

(рейтинг: 5, голосов: 2)
Добавить комментарий