新接手一个需求,要在原有的老代码里加点东西。
拉代码、下载依赖、启动项目。
执行方法,然后报错
public static void main(String[] args) {
Map<String, Object> map = getMap();
String number = (String) map.get("number");
}
public static Map<String, Object> getMap() {
Map<String, Object> map = new HashMap<>();
map.put("number", 100);
return map;
}
String number = (String) map.get("number"); 这一行报了类型转换错误。
因为往map里面塞的number是Integer包装类型,而Integer不能强转为String类型;代码不会提示任何错误,很容易忽视这一点。
可以改写为:
public static void main(String[] args) {
Map<String, Object> map = getMap();
String number = map.get("number").toString();
}
但这样的写法前提是保证map中一定能get到数据,否则同样会报错:
我一般的写法:
public static void main(String[] args) {
Map<String, Object> map = getMap();
String number = String.valueOf(map.get("score"));
}
如果map get不到值,会返回字符串"null",程序不会报错,当然能确保get时的数据类型和map里添加的类型一致,或者不会get null,前两种写法也行。
但一不小心就会页面500数据异常,被用户看到就不太好了。。。