Was sind mehrstufige Platzhalter? Verwirrung in der Syntax

Ich lese mehrstufige Platzhalter ausAngelikaLangerGenericsFaq. Ich bin ziemlich verwirrt über die Syntax. Das Dokument sagt

Der TypCollection<Pair<String,?>> ist eine konkrete Instanziierung der generischen Collection-Schnittstelle. Es ist eine heterogene Sammlung von Paaren verschiedener Typen. Es kann Elemente vom Typ enthaltenPair<String,Long> , Pair<String,Date> , Pair<String,Object> , Pair<String,String> , und so weiter und so fort. Mit anderen Worten,Collection<Pair<String,?>> enthält eine Mischung aus Paaren verschiedener FormulartypenPair<String,?> .

Der TypCollection<? extends Pair<String,?>> ist ein mit Platzhaltern parametrisierter Typ; Es steht NICHT für einen konkreten parametrisierten Typ. Es steht für einen Vertreter aus der Familie der Sammlungen, die Instanzen der Sammlungsschnittstelle sind, wobei das Typargument von der Form istPair<String,?> . Kompatible Instantiierungen sindCollection<Pair<String,Long>> , Collection<Pair<String,String>> , Collection<Pair<String,Object>> , oderCollection<Pair<String,?>> . Mit anderen Worten, wir wissen nicht, für welche Instanziierung der Sammlung sie steht.

Als Faustregel gilt, dass Sie mehrstufige Platzhalter von oben nach unten lesen müssen.

Ich bin verwirrt über die folgenden Punkte.

Kann jemand mit Beispiel auf diese drei Zitate eingehen. Ich bin total in der Syntax verlorenDas Dokument sagt, Para-1 ist die konkrete Instanziierung eines generischen Typs und andere ist nicht die konkrete Instanziierung? Wie ist das?Was bedeutet es, die Platzhalter von oben nach unten zu lesen?Was ist der Vorteil von mehrstufigen Platzhaltern?

Kann mir jemand diese Punkte erläutern. Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage