AngelikaLangerGenericsFaqからマルチレベルのワイルドカードを読んでいます。私は構文についてかなり混乱しています。文書によると
この型
Collection<Pair<String,?>>
は、ジェネリック Collection インターフェイスの具体的なインスタンス化です。これは、異なるタイプのペアの異種コレクションです。、、、、などの 要素を含めることができPair<String,Long>
ます。つまり、 フォームの異なるタイプのペアの混合が含まれています。Pair<String,Date>
Pair<String,Object>
Pair<String,String>
Collection<Pair<String,?>>
Pair<String,?>
型
Collection<? extends Pair<String,?>>
はワイルドカードのパラメーター化された型です。具体的なパラメーター化された型を表すものではありません。これは Collection インターフェースのインスタンス化であるコレクションのファミリーの代表を表し、型引数は の形式Pair<String,?>
です。互換性のあるインスタンス化はCollection<Pair<String,Long>>
、Collection<Pair<String,String>>
、Collection<Pair<String,Object>>
、またはCollection<Pair<String,?>>
です。つまり、それが Collection のどのインスタンス化を表しているかはわかりません。経験則として、マルチレベルのワイルドカードはトップダウンで読む必要があります。
以下の点で迷っています。
- 誰かがこれらの3つの引用について例を挙げて詳しく説明できますか. 私は構文に完全に迷っています
- ドキュメントによると、para-1 はジェネリック型の具体的なインスタンス化であり、その他は具体的なインスタンス化ではありませんか? それはどうですか?
- ワイルドカードを上から下に読むとはどういう意味ですか?
- マルチレベルのワイルドカードの利点は何ですか?
誰かがこれらの点を詳しく説明できますか。ありがとう。