Java のジェネリック配列
配列とジェネリックは、Java でプログラミングの障害を引き起こします。パラメトリック型の配列を直接作成することはできません。これは、配列が共変であり、実行時に要素の型を保持するのに対し、ジェネリックは型消去を使用するためです。
回避策は、次のように Array.newInstance() を使用することです。
private Comparable[] hashtable; ... hashtable = (Comparable[])Array.newInstance(Comparable.class, tableSize);
ただし、この解決策は理想的ではないことに注意することが重要です。
ジェネリック配列を使用しないのはなぜですか?
これらの問題を回避するには、ジェネリックスを操作するときに配列の代わりに ArrayList を使用することをお勧めします。 ArrayList は共変でタイプセーフであるため、ジェネリック型を格納する場合に適しています。
詳細な説明については、Java ジェネリック FAQ を参照してください。
コンポーネントの型が具体的なパラメーター化型である配列を作成できますか?
いいえ、タイプセーフではないためです。
配列は共変です。これは、スーパータイプ参照の配列がサブタイプ参照の配列のスーパータイプであることを意味します。つまり、Object[] は String[] のスーパータイプであり、文字列配列には Object[] 型の参照変数を介してアクセスできます。
以上がJava でジェネリック配列を作成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。