Délimitation des génériques avec des "super" mot-clé

Pourquoi puis-je utiliser super uniquement avec des caractères génériques et non pas avec les paramètres de type?

Par exemple, dans le Collection interface, pourquoi le toArray méthode qui n'est pas écrit comme ça

interface Collection<T>{
    <S super T> S[] toArray(S[] a);
}
Pouvez-vous expliquer ce que vous sémantiquement l'intention de faire la différence entre <S super T> et <? super T>. Me semble que c'est juste le fractionnement des poils sur la syntaxe.
Vous ne pouvez pas faire ? super T[] toArray(? super T[] a), pouvez-vous?
Et c'est pourquoi il y a un Object[] toArray() méthode dans la classe de Collection.

OriginalL'auteur mohsenof | 2010-05-10