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())