先简单描述一下问题,arrayList中存放着4个MyClass的instance,然后我把这个arrayList转换成了数组,并放到了hashmap中
hashmap.put(key,arrayList.toArray());
现在,我在另一个地方要重新得到这个长度为4的数组,于是我用下面的代码:
(MyClass[])hashmap.get(key)
但是报错,我觉得有可能是因为我hashmap.get(key)获得的是一个Object,它不能转换成数组,但不是说java中的Object是一切的父类吗?应该也可以转换成数组把。或者是其他地方出了问题,请高手解答,谢谢了先
hashmap.put(key,arrayList.toArray());
现在,我在另一个地方要重新得到这个长度为4的数组,于是我用下面的代码:
(MyClass[])hashmap.get(key)
但是报错,我觉得有可能是因为我hashmap.get(key)获得的是一个Object,它不能转换成数组,但不是说java中的Object是一切的父类吗?应该也可以转换成数组把。或者是其他地方出了问题,请高手解答,谢谢了先
以下下代码正确public static void main(String[] args) {
ArrayList a = new ArrayList();
for(int i=0; i<10; i++)
a.add(String.valueOf(i));
HashMap h = new HashMap();
h.put("1", a.toArray());
Object[] o = (Object[]) h.get("1");
for(int i=0; i<o.length; i++)
{
// 要强制转换也应该在这 MyClass c = (MyClass)o[i]; System.out.println(o[i].toString());
}
}
map.put("map",obj.toArray());
Object o = (map.get("map"));
if(o.getClass().isArray()){
int length = Array.getLength(o);
MyClass[] ls = new MyClass[length];
for(int i=0;i<length;i++){
ls[i] = (MyClass)Array.get(o,i);
}
只要在toarray后面定义参数指出要转换的数组的类型不就可以了。
如果要返回某一类型的Array,只需要传入一个同类型Array的对象。
toarray();返回的是Object数组,没有生成b的对象,它只是个空引用。
要返回b对象数组,首先要实体化b对象。
所以单纯的toarray();是不行的。应该toArray(Object[] b);
所以对于楼主的问题只要
hashmap.put(key,arrayList.toArray(new myClass[arrayList.size()]));
然后(MyClass[])hashmap.get(key)就可以了