这是我的源代码:
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[]>
上面代码的第一行引发了异常。事情就是这段代码在Eclipse 7 / Java 7中编译并运行顺利;但是,在具有相同Java版本的项目构建器中无法执行此操作。想知道导致此错误的原因以及如何解决此问题。感谢。
答案 0 :(得分: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());
}
}
答案 1 :(得分:0)
我意识到这是一个古老的问题,但它再次让我感到高兴。我使用的是JEE 6 servlet API,它与Entry配合得很好。在改变项目中其他看似无关的东西后,我得到了完全相同的错误。事实证明我已经更新了我的依赖项(使用IVY,但这几乎无关紧要)。其中一个依赖项下载了一个包含JEE 5 servlet API的jar,它不使用泛型。在搜索了下载的罐子之后,我找到了有问题的罐子(javaee-api-5.0-2.jar)并将其排除在常春藤中。快速更新,一切恢复正常。