ホームページ >Java >&#&チュートリアル >ワイルドカードのジェネリック型 (リスト) を使用して Java コレクションに値を追加できないのはなぜですか

ワイルドカードのジェネリック型 (リスト) を使用して Java コレクションに値を追加できないのはなぜですか

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 19:34:14284ブラウズ

Why Can't I Add Values to a Java Collection with a Wildcard Generic Type (List

ワイルドカード ジェネリック型を使用した Java コレクション: 値の追加

ワイルドカード ジェネリック型で宣言された Java コレクションに値を追加しようとすると、リスト などextends Parent> を実行すると、コンパイラでエラーが発生する可能性があります。これは、追加される値の型 (親 p など) がコレクションの予期される型と一致しない場合に発生します。

この制限は安全上の理由から存在します。次の例を考えてみましょう:

List<Child> childList = new ArrayList<Child>();
childList.add(new Child());

List<? extends Parent> parentList = childList;
parentList.set(0, new Parent());

Child child = childList.get(0); // Unexpected type!

ここでは、Child オブジェクトのリストを定義し、それからワイルドカード汎用リストparentList を作成します。 parentList から項目を安全に取得し、それを Parent に変換できます。ただし、親オブジェクトをリストに割り当てる試みは、リストの要素の実際の型と互換性がない可能性があるため許可されません。

この制限により、潜在的な実行時型エラーが防止され、オブジェクトの整合性が保証されます。コレクションは維持されます。これにより、コレクションの意図された動作を損なう可能性のある変更を防止しながら、未知のコレクションからの読み取りにワイルドカード型を使用できるようになります。

以上がワイルドカードのジェネリック型 (リスト) を使用して Java コレクションに値を追加できないのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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