Bonjour,
j'ai un objet en Java qui me retourne une 'Enumeration', comment s'en servir ?
Sous Eclipse j'ai systématiquement des warnings, je ne parviens pas à récupérer proprement les données.
Merci.
Bonjour,
j'ai un objet en Java qui me retourne une 'Enumeration', comment s'en servir ?
Sous Eclipse j'ai systématiquement des warnings, je ne parviens pas à récupérer proprement les données.
Merci.
Montre-nous ton code... et précise-nous quel warning (parce qu'on ne voit pas grand chose sur ta copie d'écran).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Vector<String> v = ... // exemple d'objet avec une méthode qui retourne une Enumeration for (Enumeration<String> e = v.elements(); e.hasMoreElements();) { String string = e.nextElement(); // récupération de l'élément }
NB : à part avec des vieilles classes qui ont ce type de méthode et pas d'alternative, l'Enumeration n'étant pas super pratique préférer, si elles existent, ses alternatives de type Iterator, ou, mieux, Stream en Java 8.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Deux solutions pour le warning mais comme l'a dit joel, sans le warning on peut pas savoir donc c'est pifométrique :
- Ta méthode est dépréciée (je n'y crois pas de trop, mais pourquoi pas)
- Tu n'as pas typée ton Enumeration (Enumeration<String> ou Enumeration<TonType>, etc)
Plus d'informations seraient bien venues !
Un petit n'est pas de trop si le message est utile
"Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."
j'ai le même soucis que ici :
https://community.oracle.com/thread/1184920
j'ai corrigé avec le '?', mais ça me plaît moyennement
Ce n'est pas vraiment la réponse à ma question. Et je ne pense pas qu'il s'agisse vraiment du "même souci" que dans le fil que tu cites, qui parle d'un problème aussi peu précis d'ailleurs que le tiens, mais dont on peut supposer (on est pas là pour faire des suppositions, mais bon.. qu'il s'agit d'un appel à la méthode getParameterNames () de la classe HttpServletRequest sur une très ancienne version de l'API, pour laquelle cette méthode a une signature du type :
Alors que sur les API plus récentes on a justement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.util.Enumeration getParameterNames()
La différence est que dans le second cas, l'Enumeration est paramétrée et on peut écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.util.Enumeration<java.lang.String> getParameterNames()
, alors que dans le premier cas, elle ne l'est pas, et donc on est obligé de caster dans ce qu'on pense que c'est (ou même qu'on est sûr que c'est en ayant consulté doc et/ou source). Mais dans ce dernier cas, le compilateur dit "ouais, toi, tu me dis que c'est de l'Enumeration<String> mais moi je ne peux pas en être sûr, donc je t'alerte sur le fait que ça pourrait planter". Maintenant tu as le choix en laissant le warning, ou en ajoutant une annotation (@SuppressWarnings("unchecked")) pour dire au compilateur "je sais ce que je fais, donc ton alerte, tu peux la supprimer), ou caster en Enumeration<?> qui dit,"bah puisqu'on ne sait pas ce que c'est, alors je dis que c'est une Enumeration de je ne sais pas ce que c'est". Dans l'exemple de la réponse, on précise qu'on peut récupérer les noms de paramètres par la méthode toString() qui existent sur toutes les classes, donc qui marchera mais pour une classe qu'on sait pas ce que c'est.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Enumeration<String> enumeration = request.getParameterNames();
Maintenant les questions à se poser :
- pourquoi tu as une méthode qui te retourne du Enumeration non paramétré ?
- Pourquoi tu passes par une Enumeration ?
Pour la première question, la réponse peut-être :
- L'API utilisée est ancienne
- Dans ce cas passer par une API plus récente (préférable)
- Ou, à défaut, utiliser une des solutions précitées
- La méthode est faite maison dans une classe à toi, ou à un collègue
- Dans ce cas corriger la méthode pour paramétrer le type (préférable)
Pour la seconde, si la réponse est "c'est le seul moyen" (sous entendu, je ne peux modifier le code de la méthode qui retourne de l'Enumeration, et je n'ai pas d'autres méthodes pour récupérer ce que je veux), bah lire ci-dessus. Pour toutes autres réponses : utiliser dans ce cas, les alternatives paramétrées, du type Iterator, ou Stream.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Effectivement j'ai pas le choix, ce n'est pas mon code.
J'essaye de faire au plus propre. Peut-être que le @SuppressWarnings est mieux finalement.
En tout cas Merci.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager