Java for Beginner
675 subscribers
559 photos
156 videos
12 files
857 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Аннотации для конструкторов

Аннотация
@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