Sobes.tech
Назад к вопросам
Junior — Middle
124

Можно ли объявить поле в обработчике сервлета как нестатическое и неизменяемое после инициализации?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В сервлете можно объявить поле как нестатическое (то есть экземплярное), и сделать его неизменяемым после инициализации, например, с помощью модификатора final. Обычно поля сервлета объявляют как private final, и инициализируют их в методе init() или в конструкторе (если используется нестандартный способ инициализации).

Важно помнить, что сервлет создаётся один раз и используется многими потоками, поэтому поля должны быть либо неизменяемыми (final), либо потокобезопасными. Нестатические final поля подходят для хранения конфигурации или ресурсов, которые не меняются после инициализации.

Пример:

public class MyServlet extends HttpServlet {
    private final String configValue;

    @Override
    public void init() throws ServletException {
        this.configValue = getServletConfig().getInitParameter("configKey");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.getWriter().write("Config: " + configValue);
    }
}

В этом примере поле configValue нестатическое и final, и инициализируется один раз при инициализации сервлета.