Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
out.print(paramName);
}
从上面的代码中我不明白为什么需要paramNames.nextElement()
到字符串的类型转换。有人可以解释一下吗?
当我从表单传递参数名称时,它已经在String中,那么为什么我们使用(String)
?
答案 0 :(得分:4)
Enumeration
是泛型类型,通常应与适当的泛型参数一起使用。例如Enumeration
String
s:
Enumeration<String> paramNames = ...;
这使得nextElement()
方法的签名如下所示:
public String nextElement();
他们投放到String
的原因是因为如果没有通用参数,编译器会将其视为您输入的内容:
Enumeration<Object>
因此nextElement()
的返回类型变为Object
,您无法将对象分配给String
变量paramName
。
当然,如果request.getParameterNames()
没有返回Enumeration<String>
,而只返回Enumeration
,那么你就不能做得更好。
答案 1 :(得分:0)
因为paramName
是String
,所以您告诉编译器相信您知道自己在做什么,而paramNames.nextElement()
肯定会返回String
。您的代码将编译但在运行时可能会崩溃,如果paramNames.nextElement()
将具有无法强制转换为String
的类型的对象。请注意,如果您有Enumeration<String>
,那么演员阵容就是多余的。