0

hashmapに格納されているオブジェクトを取得したいのですが、すべてのオブジェクトは同じタイプであり、それらを配列に格納したいと考えています。私はたくさんのことを試しましたが、まだ成功していません .Holdingは抽象クラスAbstractHoldingによって実装されたインターフェースであり、 BookとVideoの2つのクラスによってさらに拡張され、標準的な実践であるインターフェースも実装しました. ビデオとブッククラスの両方のコンストラクターを使用してアイテムを保存しましたが、デバッグの使用中に正しい長さとコンテンツが表示されます。私はこのコードを書きました...

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 に答える