ホームページ >Java >&#&チュートリアル >Java `List に要素を追加できないのはなぜですか

Java `List に要素を追加できないのはなぜですか

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 19:01:10702ブラウズ

Why Can't I Add Elements to a Java `List

Java リスト構造でのワイルドカードの使用: リストの影響を理解する

説明されているシナリオには、List を拡張します。 foo3 という名前。ただし、この操作によりコンパイル時エラーが発生します。この記事の目的は、そのような操作が許可されない理由を明確にし、ワイルドカード、特に List`.

Java では、ワイルドカードは未知の型を表すジェネリック型です。コレクションのコンテキストでは、ワイルドカードを使用して、コレクションに含めることができる要素の種類の上限 (? extends T) または下限 (? super T) を指定できます。

の場合リストの extends Number> の場合、ワイルドカード宣言は、List が Number のサブクラスである任意の型を保持できることを示します。これは、リストには Integer、Double、Float、または Number のその他のサブクラスが含まれる可能性があることを意味します。ただし、リストの正確なタイプは不明です。

この不確実性を考慮すると、ワイルドカード宣言の制約に違反することなく、どの特定のタイプのオブジェクトを安全にリストに追加できるかを判断することは不可能になります。たとえば、リストが実際に List である場合、Double を追加すると、Integer ではないため、リストの制約に違反します。

逆に、リストが List の場合は、 Integer を追加すると、リストの制約にも違反します。問題は、リストの正確な型がコンパイル時に不明であるという事実にあります。

したがって、List を拡張します。要素を追加または変更しようとすると制約に違反する可能性があるため、要素から読み取ることになります。この制限により、リストの整合性が確保され、実行時エラーが防止されます。

以上がJava `List に要素を追加できないのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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