Lombok
Что это
Lombok — проект по добавлению дополнительной функциональности в Java c помощью изменения исходного кода перед
Java компиляцией. При помощи аннотаций можно не писать часть кода.
Основные аннотации
- @NonNull - проверка переменных на отсутствие null.
- @Getter/@Setter - создание getters и setters.
- @ToString - создание toString().
- @EqualsAndHashCode - создает equals() и hashCode().
- @NoArgsConstructor - создание пустого конструктора.
- @RequiredArgsConstructor - создание конструктора только с final полями.
- @AllArgsConstructor - создание конструктора со всеми полями.
- @Data - содержит: @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor.
- @Value - аналог @Data, но для immutable классов. Не содержит @Setter.
- @Builder - реализация паттерна Builder. Также можно указывать на переменные с коллекциями аннотацию.
@Builder(toBuilder = true) - добавляем возможность создания Builder с любого экземпляра.
- @SneakyThrows - заменяет ключевое слово throws. Указываться над методами
- @Synchronized - замена слова synchronized.
- @Log - добавление инициализации логирования, так же позволяет выбрать вид логгера: @CommonsLog, @JBossLog,
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j.
- @Cleanup - замена try with resources.
- @Singular. Которая поможет по отдельности добавлять в коллекции.
@Singular
Аннотация дополняющая Builder, применяется на поля типа Map, Set, List и позволяет в builder добавлять
объекты по одному, а не списком.
Без @Singular
@Builder
public class Person {
String name;
List<String> cars;
}
Person person = Person.builder()
.name("A")
.cars(Arrays.asList("fictional","incidental"))
.build();
С @Singular
@Builder
public class Person {
String name;
@Singular
List<String> cars;
}
Person person = Person.builder()
.name("A")
.car("carA")
.car("carB")
.build();