Подтвердить что ты не робот

Почему getHeaderNames возвращает перечисление в HttpServletRequest, но Collection в HttpServletResponse?

HttpServletRequest.getHeaderNames() возвращает Enumeration<String> и HttpServletResponse.getHeaderNames() возвращает a Collection<String>.

Почему это несоответствие?

4b9b3361

Ответ 1

Перечисление использовалось в сочетании с Hashtable и Vector. У метода HttpServletRequest был метод getHeaderNames с jdk 1.2 и с тех пор он не был изменен.

Однако у HttpServletResponse не был метод getHeaderNames до jdk 6, и к тому времени коллекция явно была предпочтительнее, чем предыдущая Enumeration.

Ответ 2

Метод запроса реализован в версии 1.2 Java. и в то время как собранные были получены из jdk 6.

поэтому по мере улучшения java они использовали две различные коллекции и перечисление вещей.

если вы видите значения заголовка ответа, в них не будет изменений, если мы изменили коллекцию.

Ответ 3

Это может быть просто потому, что метод запроса был реализован до того, как API коллекций был добавлен в java (я думаю, в java 1.2). Это было существенное улучшение java, и на нем построено большое количество java-API. Однако некоторые предыдущие части API-интерфейса Java были построены ранее на Enumerations, Vectors (до того, как Vector был реализован java.util.List) и т.д.... Для совместимости он остался таким.

Ответ 4

В первом случае вы просто получите значения. Во втором вы получите ссылку на коллекцию, которую вы можете изменить.

В документации они указывают:

Любые изменения в возвращаемом Collection не должны влиять на этот HttpServletResponse.

Поэтому он должен быть изменен, но модификация не должна влиять на ответ.