Аннотации для конструкторов
Аннотация @NoArgsConstructor
Эта аннотация генерирует конструктор без параметров (конструктор по умолчанию).
Пример использования:
Как это работает:
Lombok генерирует конструктор User() во время компиляции. Этот конструктор инициализирует объект без установки значений полей.
Нюансы:
Если в классе есть final-поля, то @NoArgsConstructor вызовет ошибку компиляции, так как final-поля должны быть инициализированы. В таком случае можно использовать параметр force, чтобы обнулить final-поля:
Аннотация @AllArgsConstructor
Эта аннотация генерирует конструктор со всеми параметрами для всех полей класса.
Пример использования:
Как это работает:
Lombok генерирует конструктор User(String name, int age), который принимает значения для всех полей класса.
Нюансы:
Если в классе есть static-поля, они не будут включены в конструктор, так как они принадлежат классу, а не объекту.
Можно использовать параметр staticName, чтобы создать статический фабричный метод вместо обычного конструктора:
Аннотация @RequiredArgsConstructor
Эта аннотация генерирует конструктор для обязательных полей. К обязательным полям относятся:
Поля с модификатором final.
Поля, аннотированные @NonNull.
Пример использования:
Как это работает:
Lombok генерирует конструктор User(String name), который принимает только обязательные поля (name в данном случае).
Нюансы:
Если поле @NonNull не инициализировано, Lombok добавит проверку на null в конструкторе:
Можно использовать параметр staticName, чтобы создать статический фабричный метод:
#Java #Training #Spring #Lombok #AllArgsConstructor #NoArgsConstructor #RequiredArgsConstructor
Аннотация @NoArgsConstructor
Эта аннотация генерирует конструктор без параметров (конструктор по умолчанию).
Пример использования:
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class User {
private String name;
private int age;
}
Как это работает:
Lombok генерирует конструктор User() во время компиляции. Этот конструктор инициализирует объект без установки значений полей.
Нюансы:
Если в классе есть final-поля, то @NoArgsConstructor вызовет ошибку компиляции, так как final-поля должны быть инициализированы. В таком случае можно использовать параметр force, чтобы обнулить final-поля:
@NoArgsConstructor(force = true)
public class User {
private final String name = null; // final-поле будет инициализировано как null
private int age;
}
Аннотация @AllArgsConstructor
Эта аннотация генерирует конструктор со всеми параметрами для всех полей класса.
Пример использования:
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class User {
private String name;
private int age;
}
Как это работает:
Lombok генерирует конструктор User(String name, int age), который принимает значения для всех полей класса.
Нюансы:
Если в классе есть static-поля, они не будут включены в конструктор, так как они принадлежат классу, а не объекту.
Можно использовать параметр staticName, чтобы создать статический фабричный метод вместо обычного конструктора:
@AllArgsConstructor(staticName = "of")
public class User {
private String name;
private int age;
}
// Использование:
User user = User.of("John", 30);
Аннотация @RequiredArgsConstructor
Эта аннотация генерирует конструктор для обязательных полей. К обязательным полям относятся:
Поля с модификатором final.
Поля, аннотированные @NonNull.
Пример использования:
import lombok.RequiredArgsConstructor;
import lombok.NonNull;
@RequiredArgsConstructor
public class User {
@NonNull
private final String name;
private int age;
}
Как это работает:
Lombok генерирует конструктор User(String name), который принимает только обязательные поля (name в данном случае).
Нюансы:
Если поле @NonNull не инициализировано, Lombok добавит проверку на null в конструкторе:
public User(@NonNull String name) {
if (name == null) {
throw new NullPointerException("name is marked non-null but is null");
}
this.name = name;
}
Можно использовать параметр staticName, чтобы создать статический фабричный метод:
@RequiredArgsConstructor(staticName = "of")
public class User {
@NonNull
private final String name;
private int age;
}
// Использование:
User user = User.of("John");
#Java #Training #Spring #Lombok #AllArgsConstructor #NoArgsConstructor #RequiredArgsConstructor