Type HashSet<E> should be parameterized
Résolu/Fermé
hanachaabani
Messages postés
51
Date d'inscription
mercredi 8 octobre 2014
Statut
Membre
Dernière intervention
14 mars 2016
-
Modifié par KX le 15/11/2014 à 15:43
hanachaabani Messages postés 51 Date d'inscription mercredi 8 octobre 2014 Statut Membre Dernière intervention 14 mars 2016 - 15 nov. 2014 à 19:51
hanachaabani Messages postés 51 Date d'inscription mercredi 8 octobre 2014 Statut Membre Dernière intervention 14 mars 2016 - 15 nov. 2014 à 19:51
A voir également:
- Type HashSet<E> should be parameterized
- É - Guide
- E tréma - Forum Mail
- Faiblesse type spectre ✓ - Forum Jeux vidéo
- Comment faire le tréma sur le e ? Ça ne fonctionne pas avec shift et accent circ ✓ - Forum Windows 10
- E chapeau ✓ - Forum Linux / Unix
2 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
15 nov. 2014 à 15:55
15 nov. 2014 à 15:55
Bonjour,
Un certain nombre de classes, en particulier avec les collections comme HashSet, sont construites avec un paramètre générique <E> qui précise le type que l'on manipule.
Exemple, si tu travailles avec des String, tu devrais faire :
Avant Java 5 cette écriture n'existait pas, donc on peut ne rien mettre et on se retrouvera avec le même comportement qu'avant Java 5, c'est à dire qu'on manipule des Object. Mais comme on n'est plus en Java 5 depuis longtemps ça affichera un warning.
L'avantage des paramètres génériques <E> c'est qu'ils permettent de restreindre l'accès aux méthodes. Si tu regardes la documentation de HashSet<E> tu verras que des méthodes ont pour paramètre ou type de retour un objet e type E,
Si tu manipules un
Un certain nombre de classes, en particulier avec les collections comme HashSet, sont construites avec un paramètre générique <E> qui précise le type que l'on manipule.
Exemple, si tu travailles avec des String, tu devrais faire :
HashSet<String> set = new HashSet<String>();
Avant Java 5 cette écriture n'existait pas, donc on peut ne rien mettre et on se retrouvera avec le même comportement qu'avant Java 5, c'est à dire qu'on manipule des Object. Mais comme on n'est plus en Java 5 depuis longtemps ça affichera un warning.
L'avantage des paramètres génériques <E> c'est qu'ils permettent de restreindre l'accès aux méthodes. Si tu regardes la documentation de HashSet<E> tu verras que des méthodes ont pour paramètre ou type de retour un objet e type E,
add(E e)par exemple.
Si tu manipules un
HashSet<String>tu ne pourras faire que des
add(String), ce qui permet lorsque tu parcoures les objets de l'ensemble de le manipuler directement comme un String. alors que par défaut le type sera des Object, tu pourrais donc ajouter et récupérer n'importe quel type sans savoir ce qu'ils sont, ce qui n'est pas très propre.
hanachaabani
Messages postés
51
Date d'inscription
mercredi 8 octobre 2014
Statut
Membre
Dernière intervention
14 mars 2016
15 nov. 2014 à 19:51
15 nov. 2014 à 19:51
ah j'ai bien compris merci bcp :)