ホームページ  >  記事  >  Java  >  Java で LinkedList の配列を作成できないのはなぜですか?

Java で LinkedList の配列を作成できないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 01:42:03913ブラウズ

Why Can't I Create an Array of LinkedLists in Java?

Java で LinkedList 配列をインスタンス化できません

このスレッドでは、開発者が Java で LinkedList の配列を作成しようとしているときに問題に遭遇しましたスパース行列に値を格納します。エラー メッセージ「LinkedList の汎用配列を作成できません」

  1. このエラーの根本原因は何ですか?

    根本原因は、Java の汎用配列の作成に対する制限にあります。非プリミティブ型。ジェネリックは、実行時の ClassCastException を防ぐために Java 5 で導入されたタイプセーフなメカニズムです。 LinkedList などのジェネリック型の配列を宣言する場合、コンパイラは、作成される配列の特定の型を Java に認識させるために、明示的な型変換を必要とします。

  2. 理由この型は配列宣言では受け入れられますが、作成では受け入れられませんか?

    配列宣言では、ジェネリック型パラメーターが指定されていない生の型 LinkedList[] が使用されています。生の型は型指定されていないため、型安全性は強制されません。ただし、配列をインスタンス化するとき、コンパイラは特定の型パラメータを指定する必要があり、そこでエラーが発生します。

解決策:

この問題を解決するには、型キャストを実行する必要があります。修正されたコードは次のようになります。

myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];

キャスト (LinkedList[]) は、作成される配列が IntegerNode 要素を含む LinkedList の配列であることをコンパイラーに明示的に通知します。これにより、汎用配列を適切にインスタンス化できるようになります。

以上がJava で LinkedList の配列を作成できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。