Java リスト構造でのワイルドカードの使用: リストの影響を理解する extends Number>
説明されているシナリオには、List として宣言された List にデータを追加する試みが含まれます。 Number> を拡張します。 foo3 という名前。ただし、この操作によりコンパイル時エラーが発生します。この記事の目的は、そのような操作が許可されない理由を明確にし、ワイルドカード、特に List の使用の影響について包括的に説明することです。 extends Number>`.
Java では、ワイルドカードは未知の型を表すジェネリック型です。コレクションのコンテキストでは、ワイルドカードを使用して、コレクションに含めることができる要素の種類の上限 (? extends T) または下限 (? super T) を指定できます。
の場合リストの extends Number> の場合、ワイルドカード宣言は、List が Number のサブクラスである任意の型を保持できることを示します。これは、リストには Integer、Double、Float、または Number のその他のサブクラスが含まれる可能性があることを意味します。ただし、リストの正確なタイプは不明です。
この不確実性を考慮すると、ワイルドカード宣言の制約に違反することなく、どの特定のタイプのオブジェクトを安全にリストに追加できるかを判断することは不可能になります。たとえば、リストが実際に List
逆に、リストが List
したがって、List に対して実行できる唯一の安全な操作は、 Number> を拡張します。要素を追加または変更しようとすると制約に違反する可能性があるため、要素から読み取ることになります。この制限により、リストの整合性が確保され、実行時エラーが防止されます。
以上がJava `List に要素を追加できないのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。