对于cast太不清楚了,希望那位高人可以指点迷津啊?!....
   我的程序中含有如下语句:
    for(int i = 1;i<=12;i++){

String ss ;
Integer j = new Integer(i);
ss = (String)m.get(j);
System.out.println(ss);
}
   然后报错是:
   Exception in thread "main" java.lang.ClassCastException: java.lang.Long

解决方案 »

  1.   

    直接get i 就可以了,为什么还要转换成Integer
    String ss ;
    ss = (String)m.get(i);
    System.out.println(ss);
      

  2.   

    我放的时候是用的封装类Integer啊!
      

  3.   

    cast是用在子类的造型,不是用来做类型转换
      

  4.   

    因为你程序没有给全,我只能按照你大概的思想稍微补一下
    public class KDSOOQXV {
    public static void main(String[] args) {
    HashMap m = new HashMap();
    m.put(new Integer(1), new Long(1));
    for (int i = 1; i <= 12; i++) {
    String ss;
    Integer j = new Integer(i);
    ss = (String) m.get(j);
    System.out.println(ss);
    }
    }
    }你用new Integer()做Key,用new Long()做Value,放到Map中,然后取出,就会报你上面的错误。Exception in thread "main" java.lang.ClassCastException: java.lang.Long。所以
    你应该把ss = (String) m.get(j);
    改为ss = String.valueOf(m.get(j));
      

  5.   

    fredonline(天天挨踢) :
      为什么要这样的改我是不太理解啊!
      你的前提正是我想的,我的目的是做一个javabean,用来 封装数据库的操作.然后用hashmap起到缓冲和数据分页的功能.
      在向hashmap中放value的时候,我装入的是String ,取出时由于多态会使String变成Object
    然后我就想用(String)造型一下.
       所以还希望大家能我指点明白...
      

  6.   

    fredonline(天天挨踢) :
    还有就是以上的解决方法是否具有通用性呢?
    通过使用valueOf()?
      

  7.   

    你的m是什么?
    m.get??
    把程序全考过来看看
      

  8.   

    1.5不是可以给集合用泛型吗?给你的hashmap用上<String>泛型取出来的时候就不用转换了啊
    不知道能不能帮你解决这个问题,我新手上路.呵呵.
      

  9.   

    对不起,没能及时看到。按你所说,你放入hashmap的value是String型,但是,上面你程序报出的错误,确表示你的map中,放的是Long型的量。在试图取出一个Long型量并(String)它的时候出了错。
    最好检查一下是否在map.put的时候,把key和value的值颠倒了。
      

  10.   

    java.lang.ClassCastException:public class ClassCastExceptionextends RuntimeException当试图将对象强制转换为不是实例的子类时,抛出该异常。例如,以下代码将生成一个 ClassCastException: 
         Object x = new Integer(0);
         System.out.println((String)x);
      

  11.   

    如果
    a对象对A类进行instanceof操作结果为true的话。则不会出现类型转换错误。