J'ai une question très fondamentale ragarding list étend le numéro> code> sont homogènes. Ai-je raison ou y a-t-il quelque chose de fondamental que je manque? P>
3 Réponses :
Les types génériques sont plus pédants.
La différence est dans les arguments et les valeurs de retour. p> dans les collections, cette méthode indique que le comparateur doit être capable de comparer le même type ou tout type super. p> Cela signifie que vous pouvez avoir p> EXTENEZ NUMBER> CODE> NUMÉRO NUMÉRO OU UN INCONNU UNE SOUS-CLASSE. Si vous obtenez une telle valeur, ce sera un numéro code>, mais vous ne pouvez pas donner une valeur de ce type car vous ne savez pas ce qui est valide. p>
super code> est utilisé dans quelques endroits pour signifier Le type peut être un type super. par exemple p>
Ils sont plus spécifiques,
Pourriez-vous fournir des détails sur l'utilité de la liste ? Super numéro> code>?
IMHO n'est pas terriblement utile. ;)
@Peterlawrey Obtenir une question de compilation pour numéros2.add (nouveau entier (2)); code>? Cela devrait fonctionner correctement?
@Nandkumar non, Numbers2 est en fait une arrayliste
@Peterlawrey: J'ai utilisé Diamond <> code> là, non
@Peterlawrey à partir du point de vue du compilateur, Number2 est une liste Étend le numéro> code> pas un ArrayListe chiffres2.add (double.valueof (1d)); code> ne fonctionne pas aussi.
@gontard correct, le point est; La liste contient un type inconnu qui étend le numéro.
@Peterlawrey rien (mais null code>) pourrait être ajouté dans la liste Étend le numéro> code>?
Liste Étend t> code>: puisque nous ne faisons pas ce qui est vraiment ? code>: Vous ne pouvez pas Ajouter B> Item It: Ceci est une sorte de " Liste de compilation en lecture seule " code>.
Liste Super T> code>: puisque nous ne faisons pas ce qui est vraiment ? code>: vous ne pouvez pas lire B> item à partir de celui-ci: ceci est une sorte de " Compilation de l'écriture uniquement Liste de temps " code>.
@gontard sorte de mais vous pouvez appeler supprimer (0); code> ou clair (); code> dessus. ;)
@gontard Vous pouvez lire un objet code> à partir de ? Super t code> Comme chaque objet est un objet code>
@gontard const code> est un mot-clé en Java, vous ne pouvez tout simplement pas l'utiliser n'importe où. :RÉ
@Peterlawrey peut être dans Java 10 code>;)
Les génériques sont compilés des fonctionnalités de la langue du temps, des moyens, ils n'existent pas dans le temps d'exécution. Dans le mécanisme générique, pour les chèques de compilation, ils ne sont pas homogènes, c'est-à-dire si vous souhaitez utiliser le polymorphisme en type générique.
suivant vous donne une erreur de compilation, bien qu'il semble une définition valide: p> tandis que p> est valide. De plus, vous ne pouvez pas utiliser de types de caractères génériques sur le côté droit: p> ne sera pas compilé. p> p>
Liste numéro code> s (ou instances de numéro code>) p>
liste EXTENEZ NUMÉRO> CODE> -> Liste de tout type qui s'étend numéro code> p>