Maison > Java > javaDidacticiel > Pourquoi utiliser `` dans les génériques Java, en particulier dans les méthodes `assertThat` ?

Pourquoi utiliser `` dans les génériques Java, en particulier dans les méthodes `assertThat` ?

Barbara Streisand
Libérer: 2024-11-20 17:57:18
original
846 Les gens l'ont consulté

Why Use `` in Java Generics, Especially in `assertThat` Methods?

Génériques Java : quand et pourquoi utiliser ?

Lors de l'utilisation de génériques Java, il peut y avoir des cas où vous aurez besoin de ; au lieu de . Cet article examine les raisons derrière cela et explore les inconvénients potentiels associés à l'utilisation de .

Erreur de compilation dans la méthode AssertThat

Considérez l'extrait de code suivant :

Map<String, Class<? extends Serializable>> expected = null;
Map<String, Class<java.util.Date>> result = null;
assertThat(result, is(expected));
Copier après la connexion

Ce code ne parvient pas à se compiler en raison d'une incompatibilité de type. spécifie que le paramètre réel peut être SomeClass ou l'un de ses sous-types. Dans ce cas, le résultat contient Class objets, bien qu'attendus, peuvent contenir des objets Class représentant n'importe quelle classe qui implémente Serialisable. Ainsi, T est défini spécifiquement sur Map>, ce qui ne correspond pas à Map>>`.

Vous passez à Matcher< ? extends T>

Modifier la signature de la méthode assertThat en :

public static <T> void assertThat(T result, Matcher<? extends T> matcher)
Copier après la connexion

résout l'erreur de compilation. Cela permet à la méthode d'accepter un Matcher qui correspond au type de résultat, garantissant ainsi la sécurité du type.

Les inconvénients de l'utilisation de Matcher?

Utilisation de Matcher

Objectif des génériques assertThat

Les génériques de la méthode assertThat permettent de vérifier le type pour garantir que le Matcher fourni correspond au type de résultat. Bien que la classe Matcher ne nécessite pas de génériques, leur utilisation permet de renforcer la sécurité des types et d'éviter les erreurs potentielles.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal