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

解决方案 »

  1.   

    String c = "1";
    改成 Integer c=new Integer(1);
      

  2.   

    要用Integer.valueOf(XXX);
      自动装箱和拆箱是指int和integer
      

  3.   

            Map data = new HashMap();
            String c = "1";
            data.put("a", c);
            Integer b = Integer.valueOf((String)data.get("a"));
      

  4.   

    data.get("a")是Object类型,不是int,也不是Integer,
    如果非要你那样,就加个泛型吧:Map<String,Integer> data = new HashMap<String,Integer>();
      

  5.   

    您好:你对java的自动装箱拆箱有些误区。
    数值类型的变量 可以进行自动的装箱跟拆箱 如:int Integer  从名字可以看出来 他们之间有联系
    但 Integer 跟 String 没有联系  不能进行 直接的拆箱装箱 需要使用Integer.valueOf((String)data.get("a"));