Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么getHeaderNames在HttpServletRequest中返回枚举,而在HttpServletResponse中返回集合?_Java_Jakarta Ee_Servlets - Fatal编程技术网

Java 为什么getHeaderNames在HttpServletRequest中返回枚举,而在HttpServletResponse中返回集合?

Java 为什么getHeaderNames在HttpServletRequest中返回枚举,而在HttpServletResponse中返回集合?,java,jakarta-ee,servlets,Java,Jakarta Ee,Servlets,返回枚举并返回集合 为什么会出现这种差异?这可能只是因为请求方法是在将Collections API添加到java之前实现的(我认为是在java 1.2中)。这是对java的一个重大改进,大量java API都建立在它之上。然而,java API以前的一些部分是在枚举、向量(在向量实现之前java.util.List)等基础上构建的。。。为了兼容性,它一直保持这种方式。在第一种情况下,您只需获得值。在第二步中,您将获得一个可以修改的集合的引用 他们在文件中规定: 对返回的集合的任何更改不得影响此

返回
枚举
并返回
集合


为什么会出现这种差异?

这可能只是因为请求方法是在将Collections API添加到java之前实现的(我认为是在java 1.2中)。这是对java的一个重大改进,大量java API都建立在它之上。然而,java API以前的一些部分是在
枚举
向量
(在向量实现之前
java.util.List
)等基础上构建的。。。为了兼容性,它一直保持这种方式。

在第一种情况下,您只需获得值。在第二步中,您将获得一个可以修改的集合的引用

他们在文件中规定:

对返回的
集合的任何更改不得影响此
HttpServletResponse


因此,它应该被修改,但修改不应该影响响应。

枚举与哈希表和向量结合使用。HttpServletRequest自JDK1.2以来就具有getHeaderNames方法,并且此后未被更改


然而,HttpServletResponse直到jdk 6才有getHeaderNames方法,到那时,集合显然比遗留枚举更受欢迎。

请求方法已在java版本1.2中实现。 虽然收集的数据来自jdk 6

因此,随着java技术的进步,他们已经使用了两种不同的东西:收集和枚举


如果您看到响应标头值,那么如果我们修改集合,它们将不会发生任何更改。

这是一个很好的问题,因为HttpServletRequest似乎不太可能知道每个可能的标头,基于规范和特定于框架。我知道它不能完全解释应该做什么,但它显示了设计上的差异,所以它不是要修改的。@EJP我也这样理解,但公式非常奇怪。他们可以说它不应该被修改。相反,他们说它可以但没有效果。这可能是公式中的错误,也可能是作者有什么想法。