Skip to content

Latest commit

 

History

History
61 lines (53 loc) · 2.98 KB

Lombok.md

File metadata and controls

61 lines (53 loc) · 2.98 KB

НАЗАД к СОДЕРЖАНИЮ


Библиотека Lombok - для генерации геттеров и сеттеров во время компилляции, не оставляя следов в исходном коде

Мин. версия для JDK21 = 1.18.30

Аннотации:

  • @Data - генерирует пустой конструктор, геттеры, сеттеры, методы equals, hashCode, toString.
  • @Value - генерирует конструктор, только геттеры, методы equals, hashCode, toString. А также делает все поля private и final.
    • С неизменяемыми классами хорошо сочетаются аннотации @With и @Builder.
  • @With - добавляет методы для каждого поля, которые делают клон объекта с одним измененным полем.
    • Cat anotherCat = cat.withName("Вася");
  • @Builder - генерирует методы, которыми мы инициализируем объект по цепочке. Это удобно когда мы не хотим использовать конструктор со всеми параметрами (Если у нас класс неизменяемый, то в нем единственный конструктор со всеми параметрами).
  • @Slf4j - добавляет в класс логгер log
    Пример логирования:
log.info("Входящий запрос: {}", uri);
  • @SneakyThrows - делает проверяемые исключения непроверяемыми
  • @NoArgsConstructor //добавляет конструктор без аргументов
  • @AllArgsConstructor //добавляет конструктор со всеми параметрами
  • @RequiredArgsConstructor //добавляет конструктор для всех final полей
  • @Getter //добавляет геттеры для всех параметров класса
  • @Setter //добавляет сеттеры для всех параметров класса
  • @EqualsAndHashCode //добавляет реализации методов equals и hashCode
    • @EqualsAndHashCode(of = {"id", "title"})
  • @ToString //добавляет реализацию метода toString
  • @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) //делает все поля private и final

Пример работы с билдером:

Cat cat = Cat.builder()
                .name("Мурка")
                .age(3)
                .person(person)
                .build();

Чтобы исключить поля:

@ToString.Exclude
@EqualsAndHashCode.Exclude

Пример с final полями:

@Value
@With
@Builder
public class Cat {
    String name;
    int age;
    @ToString.Exclude
    @EqualsAndHashCode.Exclude
    Person person;
}