多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 声明map最好加上泛型, 不然后期不注意就导致错误了 遇到的问题, 公司一段调用工具类的方法, 工具类里是Map<String, String> map 接收, 但是有人调用是传的无泛型 Map map, 一开始其代码没问题, 后期增加了个int类型参数 map.put("count", 0) , 然后提交部署了, 导致报错, 因为工具类里, 直接map.get取传参就使用了, 导致 java.lang.Integer cannot be cast to java.lang.String 还有些方法, map是Map<String, Object> map,, 里面不注意转换也会报错 ``` private static void s1(Map<String, String> map) { Set<String> strings = map.keySet(); strings.forEach(s -> { try { // String s1 = String.valueOf(map.get(s)); System.out.println("s1 --" + s1); // map.put("page1", 1); 因为里面存的是 int 的 1, 这里会报转换异常 // java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String s1 = map.get(s); System.out.println(s1); } catch (Exception e) { System.out.println("11111111"); System.out.println(e); } }); // Incompatible parameter types in lambda expression: wrong number of parameters: expected 2 but found 1 // map.forEach(m -> { // System.out.println(m); // }); } private static void s2(Map<String, Object> map) { Set<String> strings = map.keySet(); strings.forEach(s -> { try { 模拟处理某个key, 但是这个key 的 value是 int或者字符串整数 // 第一种没问题 Object s1 = map.get(s); // 由于无法确认 s1 类型, 应该先转换为字符串 Integer i = Integer.parseInt(s1.toString()); System.out.println("i " + i); // 第二种 遇到是字符串的 map1.put("page21", "21"); 因为里面存的是 字符串 的 21, 这里会报转换异常 // java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer i = (Integer) (s1); System.out.println(i); } catch (Exception e) { System.out.println("22222222"); System.out.println(e); } }); } public static void main(String[] args) { // 声明map这种集合增加类型的重要性, 这个是在项目中 Map map = new HashMap<>(); map.put("page1", 1); map.put("page2", "2"); map.put("page3", 2.3); // 模拟调用一个方法, 里面value要求的都是字符串, 但是传的是多种类型 s1(map); Map<String, Object> map1 = new HashMap<>(); map1.put("page11", 11); map1.put("page21", "21"); // 要是再传个double , 调用的方法就又不行了 // map1.put("page23", 23.6); // 模拟调用一个方法, 里面value要处理的是字符串的数字或者int, 但是传的是多种类型 s2(map1); } ```