6

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 のどのインスタンス化を表しているかはわかりません。

経験則として、マルチレベルのワイルドカードはトップダウンで読む必要があります。

以下の点で迷っています。

  1. 誰かがこれらの3つの引用について例を挙げて詳しく説明できますか. 私は構文に完全に迷っています
  2. ドキュメントによると、para-1 はジェネリック型の具体的なインスタンス化であり、その他は具体的なインスタンス化ではありませんか? それはどうですか?
  3. ワイルドカードを上から下に読むとはどういう意味ですか?
  4. マルチレベルのワイルドカードの利点は何ですか?

誰かがこれらの点を詳しく説明できますか。ありがとう。

4

2 に答える 2

-1

ワイルドカードを使用したジェネリック型は、実際には「存在する」型です。ロジックに精通している場合はG< ? extends T >、 ∃と読むことができますS extends T:G< S >

型の「トップダウン」の読み取りに関するアンジェラの説明は、 a を含む型によって暗示される架空の存在量指定子が、?常に可能な限り に近いことを意味し?ます。たとえば、精神的G< H< ? extends T > >G<∃に書き換える必要がありますS extends T:H< S > >。外側に数量詞がないので、コンクリートと呼ばれます。

于 2013-08-22T09:31:11.657 に答える