3

这是我的源代码:

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 版本的项目构建器中无法这样做。想知道导致此错误的原因以及如何修复它。谢谢。

4

2 回答 2

2

看起来像一个铸造问题:你需要铸造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());
    }
}
于 2013-06-28T06:40:07.563 回答
0

我意识到这是一个古老的问题,但它再次吸引了我。我使用的是 JEE 6 servlet API,它在 Entry 中运行良好。在更改项目中其他看似无关的内容后,我得到了完全相同的错误。事实证明我已经更新了我的依赖项(使用 IVY,但这几乎无关紧要)。其中一个依赖项下载了一个 jar,其中包含不使用泛型的 JEE 5 servlet API。在对下载的 jar 进行一些搜索后,我发现了有问题的 jar (javaee-api-5.0-2.jar) 并将其排除在 Ivy 中。快速更新,一切恢复正常。

于 2017-12-22T15:43:37.580 回答