0

我想检索存储在hashmap中的对象,所有对象都属于同一类型并希望将它们存储在数组中。我尝试了很多东西,但仍然没有成功: Holding 是一个由抽象类 AbstractHolding实现的接口,并由Book 和 Video两个类进一步扩展,它们还实现了标准实践的接口。我已经使用视频和书籍类的构造函数存储了这些项目,并且在使用调试时它显示了正确的长度和内容。我写了这段代码...

public Holding[] getAllHoldings() {
        System.out.println(holdingMap.values().toArray().length);
        Holding[] holding = (Holding[])holdingMap.values().toArray();

        return holding;

    }

但得到 [Ljava.lang.Object; 不能转换为 [Llms.model.Holding;

我不明白存储的对象何时是 Holding 类型,那么为什么会发生这种转换错误...

4

1 回答 1

1

试试holdingMap.values().toArray(new Holding[0]);

toArray(T[] a) 方法将使用

java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size)

创建类型为 T 的数组,可以安全地转换为 T[]

于 2013-04-14T13:12:23.513 回答