Какая основная разница между аннотациями @AllArgsConstructor и @RequiredArgsConstructor в Lombok?

Аннотации Lombok @AllArgsConstructor и @RequiredArgsConstructor автоматически генерируют конструкторы для класса, но с разным набором параметров:

Короткий ответ

Что ответить на собеседовании

Аннотации Lombok @AllArgsConstructor и @RequiredArgsConstructor автоматически генерируют конструкторы для класса, но с разным набором параметров:

Подробный разбор

Ответ с пояснениями

Аннотации Lombok @AllArgsConstructor и @RequiredArgsConstructor автоматически генерируют конструкторы для класса, но с разным набором параметров:

  • @AllArgsConstructor создаёт конструктор со всеми полями класса (включая инициализированные и неинициализированные).
  • @RequiredArgsConstructor создаёт конструктор только с обязательными полями — это поля, объявленные как final или помеченные аннотацией @NonNull.

Пример:

@AllArgsConstructor
@RequiredArgsConstructor
public class User {
    private final String name;
    private int age;
}
  • @AllArgsConstructor сгенерирует конструктор User(String name, int age).
  • @RequiredArgsConstructor сгенерирует конструктор User(String name).

Таким образом, @RequiredArgsConstructor полезен, когда нужно гарантировать инициализацию только обязательных полей, а @AllArgsConstructor — когда нужен конструктор для всех полей.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее