Java 将request.getParameterMap()传递给需要映射的方法时发生强制转换错误<;字符串,对象>;
我开始测试Tomcat7,发现了一个在Tomcat5中从未遇到过的强制转换错误。Tomcat的两个版本使用到Java6的相同路径 以下是来自JSP的调用:Java 将request.getParameterMap()传递给需要映射的方法时发生强制转换错误<;字符串,对象>;,java,map,casting,tomcat7,arrays,Java,Map,Casting,Tomcat7,Arrays,我开始测试Tomcat7,发现了一个在Tomcat5中从未遇到过的强制转换错误。Tomcat的两个版本使用到Java6的相同路径 以下是来自JSP的调用: ImcKaView entityBrowser=new ImcKaView(); entityBrowser.setParam(request.getParameterMap(),true); 下面是正在调用的方法: public void setParam(Map<String,Object> m,boolean conver
ImcKaView entityBrowser=new ImcKaView();
entityBrowser.setParam(request.getParameterMap(),true);
下面是正在调用的方法:
public void setParam(Map<String,Object> m,boolean convertCollection){/* set param code */}
Tomcat 7.0:
public java.util.Map<java.lang.String,java.lang.String[]> getParameterMap()
public java.util.Map getParameterMap()
否您不能将Map
传递给Map
(类型不同)。这里需要使用通配符
public void setParam(Map<String, ? extends Object> m, boolean convertCollection){
..
}
public void setParam(映射m,布尔集合){
..
}
是对
通配符
和有界通配符
的很好解释,Java中的泛型是不协变的。这意味着Map
不是Map
的子类型。类型参数(String[]
is-aObject
)之间的关系不会使泛型类型(Map
和Map
)相关。感谢您给出一个通配符用法的示例。我对“?”和“?扩展对象”之间的区别有点困惑,但我相信我能查到它。很难选择一个答案,因为他花了更多的时间解释问题,而你的问题实际上已经解决了。我只是选择了打破平局的时间。谢谢。没问题:)是的,Java泛型和通配符需要一些时间才能破解。继续练习。。
public void setParam(Map<String, ? extends Object> m, boolean convertCollection){
..
}