Maison >Java >javaDidacticiel >Quelle est la différence entre « et »

Quelle est la différence entre « et »

Patricia Arquette
Patricia Arquetteoriginal
2024-11-30 04:52:10195parcourir

What's the difference between `` and `

Contraste dans Java Generics

Dans la programmation orientée objet, les génériques jouent un rôle crucial dans l'amélioration de la sécurité des types et de la réutilisabilité du code. Dans les génériques Java, l'utilisation de caractères génériques tels que est essentiel pour gérer les scénarios de covariance et de contravariance.

Exemple de scénario

Considérez l'exemple suivant utilisant JUnit avec les matchers Hamcrest :

Map<String, Class<? extends Serializable>> expected = null;
Map<String, Class<java.util.Date>> result = null;
assertThat(result, is(expected));  

Ce code ne parvient pas à se compiler en raison d'un inadéquation entre les paramètres de type générique dans la signature de la méthode assertThat et les types réels impliqués.

Pourquoi

Pour comprendre pourquoi utiliser

Dans l'exemple donné, la carte attendue peut contenir instances d'objets Class représentant des sous-classes de Serialisable. D’un autre côté, la carte de résultats ne peut contenir que des objets Class représentant la classe Date. En utilisant , la méthode assertThat peut accepter des matchers qui vérifient si une valeur est une instance d'une classe qui étend Serialisable, y compris la classe Date.

Souligner le rôle des génériques dans assertThat

Le assertThat La méthode dans JUnit est générique pour garantir qu’un correspondant approprié est transmis pour le type de résultat. En le tapant de manière générique , la méthode impose que le matcher fourni soit conforme au type T, évitant ainsi les erreurs potentielles de non-concordance de type. liste de paramètres à Matcher

Conclusion

Comprendre la distinction entre dans les génériques Java, il est crucial pour gérer correctement la covariance. Dans l'exemple fourni,

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn