ホームページ  >  記事  >  Java  >  あなたの記事に基づいた質問形式のタイトルをいくつか示します。 * Java で LinkedList の汎用配列を作成できないのはなぜですか? * Java でジェネリックスの消去を克服し、LinkedList の配列を作成する方法

あなたの記事に基づいた質問形式のタイトルをいくつか示します。 * Java で LinkedList の汎用配列を作成できないのはなぜですか? * Java でジェネリックスの消去を克服し、LinkedList の配列を作成する方法

DDD
DDDオリジナル
2024-10-28 12:08:30295ブラウズ

Here are a few question-style titles based on your article:

* Why Can't I Create a Generic Array of LinkedLists in Java?
* How to Overcome Generics Erasure and Create an Array of LinkedLists in Java
* Java's Limitation: Why Direct Creation of a Generic

LinkedList の配列作成時のエラーへの対処

Java では、LinkedList の汎用配列を直接作成することはできません。これは、「ジェネリック消去」として知られる Java 言語の制限によるものです。 Java コードをコンパイルするとき、コンパイラは LinkedList などのジェネリック型の型情報を消去します。その結果、Java 仮想マシン (JVM) は、コードの実行時に LinkedList などの生の型のみを認識します。

問題の解決

この問題を解決するには、次のことができます。型をキャストして次のような宣言を行います。

<code class="java">myMatrix = (LinkedList<IntegerNode>[]) new LinkedList<?>[numRows];</code>

配列を特定の型にキャストすることにより、それが IntegerNode オブジェクトを含む LinkedList の配列であることをコンパイラーに明示的に伝えます。宣言内のワイルドカード文字 (?) は、LinkedList 配列内の要素の特定のタイプが、任意のタイプのオブジェクトである限り無関係であることを示します。

宣言の互換性の説明

LinkedList[] myMatrix の宣言。コンパイラーは最初にジェネリック型引数が不明な型であると想定するため、この関数はコード内の代入ステートメントと互換性があります。ジェネリック配列を直接インスタンス化することはできませんが、コンパイラでは、実行時に LinkedList の配列を作成する可能性に対応する宣言を行うことができます。

以上があなたの記事に基づいた質問形式のタイトルをいくつか示します。 * Java で LinkedList の汎用配列を作成できないのはなぜですか? * Java でジェネリックスの消去を克服し、LinkedList の配列を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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