java - 迭代 HttpServletRequest 参数映射的条目集时出错

标签 java generics

这是我的源代码:

for (Map.Entry<String, String[]> e : request.getParameterMap().entrySet()) {
  if(e.getValue() != null && e.getValue().length > 0) { 
    someMap.put(e.getKey(), e.getValue()[0]);
  } else {
    someMap.put(e.getKey(), e.getValue());
  }
}

我得到这个编译错误:

Type mismatch: cannot convert from element type Object to Map.Entry<String, String[]>

上面代码的第一行引发了异常。问题是这段代码可以在带有 Java 7 的 Eclipse 中顺利编译和运行;但是,在也具有相同 Java 版本的项目生成器中无法执行此操作。想知道导致此错误的原因以及如何修复它。谢谢。

最佳答案

看起来像是选角问题:您需要选角 request.getParameterMap()Map<String, String[]>

 for (Map.Entry<String, String[]> entry :
 ((Map<String, String[]>)request.getParameterMap()).entrySet()) {
    // rest of your work-arround
 }

或者迭代如下:

for(Object obj :request.getParameterMap().entrySet()) {
    Map.Entry<String, String[]> entry = (Map.Entry<String, String[]>) obj;
    if(entry.getValue() != null && entry.getValue().length > 0) { 
       someMap.put(entry.getKey(), entry.getValue()[0]);
    } else {
       someMap.put(entry.getKey(), entry.getValue());
    }
}

关于java - 迭代 HttpServletRequest 参数映射的条目集时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17358497/

相关文章:

Java名称冲突错误,一个方法与另一个方法有相同的删除

java - 为什么HashMap实例的类类型与HashMap.class相等?

c# - 关于T型的问题

java - Codename One 中的 HTTPS (SSL) 连接问题

Java UDP 服务器-客户端显示方形字符

java - 如何快速查看RMI注册表?

c# - 通用类型是任何接口(interface)的通用函数

java - 嵌套有界通配符

java - Camel 解码休息响应异常

java - 使用 Flying Saucer PDF 渲染将格式错误的 HTML 转换为 PDF