私は、relationship with raw typesのようなジェネリックに関する特定の質問を扱ういくつかのトピックを読んだ。しかし、 Java SE tutorial on unbound genericsにある特定の行についての追加説明が必要です。Javaジェネリック、アンバウンドワイルドカード<?>対<Object>
文によると:
がprintlistの目標は、あらゆるタイプのリストを印刷することであるが、それはその目標を達成するために失敗した - それは、Objectインスタンスのリストだけを出力します。リスト<の>、リスト<の文字列>、リスト<のダブル>などをリスト<オブジェクト>のサブタイプではないために出力することはできません。
この文章をよく理解すれば、 List<?>
とList<Object>
の違いは、前者を実装することによってtype引数List<String>
またはList<Integer>
を使用できることです。後で実装する場合は、型引数List<Object>
しか使用できません。あたかもList<?>
がObject
の上限であるかのように、すなわちList<? Object>
になります。
しかし、私が以前理解したことによると、List<Object>
にはクラスObject
のインスタンスしか含まれておらず、何か他のものではないという意味で私を混乱させます。
List<Object>
とList<?>
は同じではありません。List<Object>
にオブジェクトまたはオブジェクトの任意のサブタイプを挿入できます。しかし、null
はList<?>
にしか挿入できません。
私はここで「あなたが求めているものは不明」としなければならない。 – Mena
彼は '付加的な説明 'を望んでいる。 – ctst
あなたの情報がどこから届いているのか分かりませんが、あなたが提供する例文はどちらも間違っています。 – jervine10