質問はこれに似ています @SuppressWarnings("unchecked") に中間変数を使用する必要があるのはなぜですか? 、しかし、私はそれから解決策を得ることができませんでした.
演習として、ハッシュ テーブル構造をゼロから構築しています。そこで、HashTableDemo を補助するクラス LinkedListDemo を作成しました。LinkedListDemo クラスのテストはまったく問題ありません。特に、次のサブルーチンは実行時に ClassCastException エラーを引き起こしません。
    public LinkedListDemo<S, T> reverse() {
        if (count == 0)
            return null;
        @SuppressWarnings("unchecked")
        S[] keys = (S[]) new Object[count];
        @SuppressWarnings("unchecked")
        T[] vals = (T[]) new Object[count];
        ListNode<S, T> runner = head;
        for (int k = 0; k < count; k++) {
            keys[k] = runner.pair.getKey();
            vals[k] = runner.pair.getValue();
            runner = runner.next;
        }
        ArrayUtils.reverse(keys);
        ArrayUtils.reverse(vals);
        return new LinkedListDemo<S, T>(keys, vals);
    }
一方、私の HashTable クラスでは次のようになります。
public class HashTableDemo<S, T> {
    private LinkedListDemo<S, T>[] table = (LinkedListDemo<S, T>[]) new Object[10]; 
// more code...
}
Java の HashMap クラスがこの問題を回避する方法、および/またはどのように回避できるかを知っている人はいますか? 上記のリンクで提案されているように、コンストラクター内に中間変数を作成しようとしましたが、機能しませんでした。