Gymterview
junior

Почему необходимо переопределить только init() метод без аргументов

Метод init() без аргументов следует переопределять вместо init(ServletConfig config), чтобы избежать ошибки с пропущенным вызовом super.init(config). Класс GenericServlet вызывает init() без аргументов в конце метода init(ServletConfig config) — это паттерн Template Method.

Если переопределить init(ServletConfig config) и забыть вызвать super.init(config), объект ServletConfig не будет сохранён, и последующие вызовы getServletConfig() вернут null. Это приведёт к NullPointerException в runtime. Переопределение безаргументного init() гарантирует, что GenericServlet корректно сохранит ServletConfig до вызова пользовательского кода инициализации.

Пример
// Правильно: переопределяем init() без аргументов
@Override
public void init() throws ServletException {
    // инициализация данных
}

На собеседовании: вопрос проверяет понимание паттерна Template Method и двухфазной инициализации в Servlet API. Частая ошибка — путать init() и init(ServletConfig).