import java.util.*;
import java.text.*;
public class test{
public static void main(String[] args) {
Map data = new HashMap();
String c = "1";
data.put("a", c);
Integer b = (Integer)data.get("a");
}}上面的代码编译没问题,
为什么运行起来红色部分就报错Exception in thread "main" java.lang.ClassCastException
at test.main
import java.text.*;
public class test{
public static void main(String[] args) {
Map data = new HashMap();
String c = "1";
data.put("a", c);
Integer b = (Integer)data.get("a");
}}上面的代码编译没问题,
为什么运行起来红色部分就报错Exception in thread "main" java.lang.ClassCastException
at test.main
改成 Integer c=new Integer(1);
自动装箱和拆箱是指int和integer
String c = "1";
data.put("a", c);
Integer b = Integer.valueOf((String)data.get("a"));
如果非要你那样,就加个泛型吧:Map<String,Integer> data = new HashMap<String,Integer>();
数值类型的变量 可以进行自动的装箱跟拆箱 如:int Integer 从名字可以看出来 他们之间有联系
但 Integer 跟 String 没有联系 不能进行 直接的拆箱装箱 需要使用Integer.valueOf((String)data.get("a"));