对于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
我的程序中含有如下语句:
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
String ss ;
ss = (String)m.get(i);
System.out.println(ss);
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));
为什么要这样的改我是不太理解啊!
你的前提正是我想的,我的目的是做一个javabean,用来 封装数据库的操作.然后用hashmap起到缓冲和数据分页的功能.
在向hashmap中放value的时候,我装入的是String ,取出时由于多态会使String变成Object
然后我就想用(String)造型一下.
所以还希望大家能我指点明白...
还有就是以上的解决方法是否具有通用性呢?
通过使用valueOf()?
m.get??
把程序全考过来看看
不知道能不能帮你解决这个问题,我新手上路.呵呵.
最好检查一下是否在map.put的时候,把key和value的值颠倒了。
Object x = new Integer(0);
System.out.println((String)x);
a对象对A类进行instanceof操作结果为true的话。则不会出现类型转换错误。