Аннотации для работы с коллекциями
Аннотация @Builder
Эта аннотация реализует паттерн Builder, который позволяет создавать объекты через цепочку вызовов. Это особенно полезно для классов с большим количеством полей.
Пример использования:
Как это работает:
Lombok генерирует внутренний класс UserBuilder с методами для каждого поля. В результате вы можете создавать объекты через цепочку вызовов, что делает код более читаемым.
Сгенерированный код:
Нюансы:
Можно использовать параметр builderMethodName, чтобы изменить имя метода builder():
Аннотация @Singular
Эта аннотация используется вместе с @Builder для удобного добавления элементов в коллекции. Она генерирует методы для добавления элементов по одному.
Пример использования:
Как это работает:
Lombok генерирует методы для добавления элементов в коллекцию. Например, для поля hobbies будет создан метод hobby(String hobby).
Сгенерированный код:
Нюансы:
Lombok автоматически определяет тип коллекции и генерирует соответствующие методы.
Можно использовать параметр value, чтобы изменить имя метода:
#Java #Training #Spring #Lombok #Singular #Builder
Аннотация @Builder
Эта аннотация реализует паттерн Builder, который позволяет создавать объекты через цепочку вызовов. Это особенно полезно для классов с большим количеством полей.
Пример использования:
import lombok.Builder;
@Builder
public class User {
private String name;
private int age;
}
// Использование:
User user = User.builder()
.name("John")
.age(30)
.build();
Как это работает:
Lombok генерирует внутренний класс UserBuilder с методами для каждого поля. В результате вы можете создавать объекты через цепочку вызовов, что делает код более читаемым.
Сгенерированный код:
public class User {
private String name;
private int age;
User(String name, int age) {
this.name = name;
this.age = age;
}
public static UserBuilder builder() {
return new UserBuilder();
}
public static class UserBuilder {
private String name;
private int age;
UserBuilder() {}
public UserBuilder name(String name) {
this.name = name;
return this;
}
public UserBuilder age(int age) {
this.age = age;
return this;
}
public User build() {
return new User(name, age);
}
}
}
Нюансы:
Можно использовать параметр builderMethodName, чтобы изменить имя метода builder():
@Builder(builderMethodName = "create")
public class User {
private String name;
private int age;
}
// Использование:
User user = User.create().name("John").age(30).build();
Если класс содержит final-поля, Lombok автоматически добавит их в билдер.
Аннотация @Singular
Эта аннотация используется вместе с @Builder для удобного добавления элементов в коллекции. Она генерирует методы для добавления элементов по одному.
Пример использования:
import lombok.Builder;
import lombok.Singular;
import java.util.List;
@Builder
public class User {
private String name;
@Singular
private List<String> hobbies;
}
// Использование:
User user = User.builder()
.name("John")
.hobby("Reading")
.hobby("Swimming")
.build();
Как это работает:
Lombok генерирует методы для добавления элементов в коллекцию. Например, для поля hobbies будет создан метод hobby(String hobby).
Сгенерированный код:
public class User {
private String name;
private List<String> hobbies;
User(String name, List<String> hobbies) {
this.name = name;
this.hobbies = hobbies;
}
public static UserBuilder builder() {
return new UserBuilder();
}
public static class UserBuilder {
private String name;
private List<String> hobbies = new ArrayList<>();
UserBuilder() {}
public UserBuilder name(String name) {
this.name = name;
return this;
}
public UserBuilder hobby(String hobby) {
this.hobbies.add(hobby);
return this;
}
public User build() {
return new User(name, hobbies);
}
}
}
Нюансы:
Lombok автоматически определяет тип коллекции и генерирует соответствующие методы.
Можно использовать параметр value, чтобы изменить имя метода:
@Singular("interest")
private List<String> hobbies;
// Использование:
User user = User.builder().interest("Reading").interest("Swimming").build();
#Java #Training #Spring #Lombok #Singular #Builder