Назад к вопросам
СБЕР
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, и инициализируется один раз при инициализации сервлета.