java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer map里string轉integer錯誤


map里放了string的數字,轉型integer會報錯。

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

梳理調查了一下,終於搞清楚了。

先來3個放進map里的變量

            Integer a = 111;
            String b = "bbbbb";
            String c = "881155";     

a是intege數字,c是數字的字符串

            Map paramszc;
            paramszc = new HashMap();
            paramszc.put("hostName", b);
            paramszc.put("testID", a);
            paramszc.put("exec", c);
            Integer zzz = (Integer) paramszc.get("testID");
            //error
            //Integer zzz1 = (Integer) paramszc.get("exec");

            Map<String, Object> paramsyyy = new HashMap<String, Object>();
            paramsyyy.put("hostName", b);
            paramsyyy.put("testID", a);
            paramsyyy.put("exec", c);
            Integer zczz = (Integer) paramsyyy.get("testID");
            Integer zzz1 = (Integer) paramsyyy.get("exec");


意思是,不管你定義的map是不寫類型直接new hashmap,還是 寫一個

new HashMap<String, Object>();

你put的時候是integer 那么可以直接強轉不會報錯
Integer zzz = (Integer) paramszc.get("testID");
但是如果你放進去的時候是字符串,內容是數字,你強轉就要報標題的錯誤了
Integer zzz1 = (Integer) paramszc.get("exec");
會報錯
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

為了不報錯,可以這樣寫
Integer.parseInt(params.get("testID").toString())

 

 
        
 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM