ジェネリック クラスの配列の作成
ArrayList
エラーの原因
Java は、型安全性の問題のため、ジェネリック クラスの配列の直接作成をサポートしていません。この機能が許可されている場合、次の例に示すように、潜在的な型エラーが発生する可能性があります。
<code class="java">List<String>[] lsa = new List<String>[10]; // illegal Object[] oa = lsa; // OK because List<String> is a subtype of Object List<Integer> li = new ArrayList<Integer>(); li.add(new Integer(3)); oa[0] = li; String s = lsa[0].get(0);</code>
このシナリオでは、oa 配列は lsa 配列に割り当てられますが、整数値はインデックス 0 のリストに追加されます。lsa からインデックス 0 の要素を取得し、それを String にキャストしようとすると、ClassCastException が発生します。
回避策
Toこの制限を回避するには、配列の代わりにコレクションを使用することを検討してください。例:
<code class="java">public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>>();</code>
または、配列要素型として機能する補助クラスを作成できます。
<code class="java">class MyObjectArrayList extends ArrayList<MyObject> { }</code>
<code class="java">MyObjectArrayList[] a = new MyObjectArrayList[2];</code>
コレクションまたは補助クラスを使用すると、Javaコンパイラは型の安全性を確保し、潜在的なエラーを防ぐことができます。
以上がJava でジェネリック クラスの配列を作成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。