簡體   English   中英

需要解析httpServeletRequest時的ClassCastException

[英]ClassCastException when need to parse httpServeletRequest

我從tomcat運行我的代碼,但出現錯誤

HashMap<String, Object> params;
params = (HashMap) HttpUtils.getParamsFromRequest(request);

HttpUtils代碼如下

    public static Map<String, ? extends Object> getParamsFromRequest(HttpServletRequest httpServletRequest) {
    return httpServletRequest.getParameterMap();
}

但是像這樣得到異常

java.lang.ClassCastException: org.apache.catalina.util.ParameterMap cannot be cast to java.util.HashMap
at se.mindspot.tender.backend.servlet.service.file.FileServiceServlet.doGet(FileServiceServlet.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Map是接口, HashMap是具體實現。 ParameterMap實現了Map ,但子類HashMap所以它不能被轉換為一個HashMap 通常正確的做法是

Map<String, Object> params;
params = HttpUtils.getParamsFromRequest(request);

編程到Map接口 但是,你可以做

params = new HashMap<>(HttpUtils.getParamsFromRequest(request));

如果您需要 HashMap並擁有其他種類的Map ,但其中涉及一個副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM