ホームページ >Java >&#&チュートリアル >Java ジェネリックス: `List`、`List`、および `List` の違いは何ですか?

Java ジェネリックス: `List`、`List`、および `List` の違いは何ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-24 04:54:10927ブラウズ

Java Generics: What's the Difference Between `List`, `List`, and `List`?

Java ジェネリック: List、List、List

概要

Java ジェネリックは、特定の型のオブジェクトを保持できる型安全なコレクションを作成するためのメカニズム。この記事では、List インターフェイスの 3 つのバリエーション、List、List、および List の違いについて説明します。

違いを理解する

1. List (Raw Type)

List は、List インターフェイスの Raw 型です。型引数を指定しません。つまり、任意の型のオブジェクトを保持できます。ただし、生の型は潜在的な型の安全性の問題を引き起こすため、一般に推奨されません。

2.リスト<オブジェクト> (パラメータ化された型)

Listこれは、List が Object 型のオブジェクトのみを保持できることを指定するパラメーター化された型です。これにより型の安全性は確保されますが、生の型と比較してリストの柔軟性が制限されます。

3.リスト (ワイルドカード型)

リストは、未知の型のリストを示すワイルドカード型です。任意のタイプのオブジェクトを保持できますが、リストに新しいオブジェクトを追加するために使用することはできません。ワイルドカード型は主に、メソッドが任意の型のリストを受け入れることができることを示すパラメータ型として使用されます。

各型を使用する場合

1. List (Raw Type)

  • リストに格納されているオブジェクトの型が無関係であるか、コンパイル時に不明な場合は、List を使用します。
  • ただし、潜在的な型に注意してください。安全性の問題があるため、可能な限りパラメータ化された型の使用を検討してください。

2.リスト<オブジェクト> (パラメータ化された型)

  • Use List型の安全性は確保したいが、任意の型のオブジェクトを保持できるリストが必要な場合。
  • この型はワイルドカード型よりも柔軟性が低いことに注意してください。
  • 3 。リスト (ワイルドカード型)

    • リストを使用任意のタイプのリストを受け入れることができるメソッド パラメータが必要な場合。
    • このタイプでは柔軟性が高まりますが、リストに新しいオブジェクトを追加することはできません。

    メソッド シグネチャの例

    1. CanYouGiveMeAnAnswer(List l)

    List はすべてのリスト タイプのスーパークラスであるため、このメソッドは生のリストやパラメーター化されたリストを含むあらゆるタイプのリストを受け入れることができます。

    2 。 CanYouGiveMeAnAnswer(List l)

    このメソッドは、Object 型のパラメーター化されたリストのみを受け入れることができます。生のリストや他のタイプのリストは受け入れられません。

    3. CanYouGiveMeAnAnswer(リスト l)

    このメソッドは、生のリストやパラメーター化されたリストを含むあらゆるタイプのリストを受け入れることができますが、新しいオブジェクトをリストに追加することはできません。

    以上がJava ジェネリックス: `List`、`List`、および `List` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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