我想检索存储在hashmap中的对象,所有对象都是相同类型的,并且希望将它们存储在数组中。我尝试了很多事情,但仍然没有成功:Holding是由抽象类AbstractHolding实现的接口,进一步是由扩展的类、图书和视频两类,它们还实现了标准实践的接口。我使用视频和图书类的构造函数存储了项目,它在使用调试时显示了正确的长度和内容。我写了这段代码..。
public Holding[] getAllHoldings() {
System.out.println(holdingMap.values().toArray().length);
Holding[] holding = (Holding[])holdingMap.values().toArray();
return holding;
}但是得到[Ljava.lang.Object;不能被投射到[Llms.model.Holding];
我不明白当存储的对象是类型保持那么为什么会发生这种铸造错误.
发布于 2013-04-14 13:12:23
试一试holdingMap.values().toArray(new Holding[0]);
toArray(T[] a)方法将使用
java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size)要创建T类型的数组,可以安全地将其转换为T[]
https://stackoverflow.com/questions/15999406
复制相似问题