Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1284 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Recuperer le type de l'objet d'une Arraylist

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Recuperer le type de l'objet d'une Arraylist

n°1738959
bubqr
Posté le 29-05-2008 à 15:47:45  profilanswer
 

Bonjour,
 
J'ai un probleme qui paraitra probablement stupdie a la majorite d'entre vous, mais apres recherche sur le forum et sur google, je n'ai pas réussi à trouver la solution.
 
J'ai une Arraylist de plusieurs types differents d'objets, et au moment de les recuperer pour les exploiter, je n'arrive pas a savoir comment recuperer le type de l'objet que j'ai recuperé avec mon iterateur.
 
En effet j'aimerais avoir ca:
 

Code :
  1. while (it.hasNext())
  2.  {
  3.   if ("La classe de cet objet est de type Triangle) {Faire tout ce pavé}
  4.                         if ("La classe de cet objet est de type Carré) {Faire tout ce pavé}


 
La seule solution que j'ai trouver c'est d'utiliser la methode Iterator.toString, qui renvoie "Carre@2a4b56", de recuperer les premiers caracteres, et de le comparer avec le type de la classe.
 
C'est assez moche, et je pense bien qu'il y a bien mieux a faire, non ?
 
Merci d'avance !


Message édité par bubqr le 29-05-2008 à 15:48:35
mood
Publicité
Posté le 29-05-2008 à 15:47:45  profilanswer
 

n°1738973
masklinn
í dag viðrar vel til loftárása
Posté le 29-05-2008 à 16:05:27  profilanswer
 

isinstance
 
Et accessoirement, devoir utiliser ce genre de trucs est 90% du temps un signe que ton design est franchement mauvais.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1739017
nerisson
Pic-pic
Posté le 29-05-2008 à 16:56:53  profilanswer
 

Essaye comme ca:
 

Code :
  1. while(it.hasNext()) {
  2.   Object o = it.next();
  3.   if(o instanceof Triangle) {
  4.     Triangle t = (Triangle)o;
  5.     // blabla
  6.   } else if(o instanceof Carre) {
  7.     Carre c = (Carre)o;
  8.     // blabla
  9.   }
  10. }


Sinon +1 avec Masklinn, essaye de factoriser tes classes Triangle et Carre afin de n'appeler que des methodes communes aux deux classes dans ton itération.


---------------
Light is right
n°1739033
masklinn
í dag viðrar vel til loftárása
Posté le 29-05-2008 à 17:25:22  profilanswer
 

nerisson a écrit :

Sinon +1 avec Masklinn, essaye de factoriser tes classes Triangle et Carre afin de n'appeler que des methodes communes aux deux classes dans ton itération.


Non mais de toute façon pour bosser proprement si il utilise les generics il a déjà une interface ou une superclasse commune

Spoiler :

d'un autre côté, s'il utilise les iterators manuellement de cette manière je doute qu'il code en java5 [:sadnoir]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1739035
bubqr
Posté le 29-05-2008 à 17:30:19  profilanswer
 

Concretement, je gere un Zoo, j'ai des cages normales, et des classes derivées comme par exemple Cage pour robots. Je veux faire une seule et même liste de cages, sans differencier les differents types de cages. Mais lors du parcours de cette liste, pour afficher les cages et leurs contenus, je dois bien caster les differents objets que je recupere non ?
Ou alors il existe une autre methode ?

n°1739041
masklinn
í dag viðrar vel til loftárása
Posté le 29-05-2008 à 17:44:50  profilanswer
 

http://www.deitel.com/articles/jav [...] erics.html


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1739062
bubqr
Posté le 29-05-2008 à 19:26:49  profilanswer
 

Autant pour moi je croyais que si on ne precisait pas le type de l'objet recupere, on ne pouvait utiliser que des methodes de la classe Object, et donc pas les methodes generiques. Désolé, merci !

n°1739118
charly007
Posté le 29-05-2008 à 22:30:34  profilanswer
 

bubqr a écrit :

Concretement, je gere un Zoo, j'ai des cages normales, et des classes derivées comme par exemple Cage pour robots. Je veux faire une seule et même liste de cages, sans differencier les differents types de cages. Mais lors du parcours de cette liste, pour afficher les cages et leurs contenus, je dois bien caster les differents objets que je recupere non ?
Ou alors il existe une autre methode ?


La classe mère (Cage) possède une méthode réalisant ce que tu veux faire (en l'occurrence, afficher son contenu).
Les classes filles (CageRobot, ...) redéfinissent cette méthode à leur convenance.
 
Dans ton parcours avec l'iterator, tu castes en la classe mère (Cage) ce que renvoie next().


Message édité par charly007 le 29-05-2008 à 22:31:15

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Recuperer le type de l'objet d'une Arraylist

 

Sujets relatifs
Récuperer une variable dans Textbox d'un formviewType enum, performance et maintenabilité
comment récupérer des variables dans...[Java] Optimisation d'un serveur websphere
[JAVA] [Résolu] Variable Calendar incrémentée dans une boucle[C++ / SQL] Enregistrer un objet en tant que blob
[JAVA] GUI, listener et events (debutant)[JAVA] Hastable et boucle
création archive d'extension bpr avec java?[Java/Jsp] Changer valeur d'une zone de saisie ?
Plus de sujets relatifs à : [Java] Recuperer le type de l'objet d'une Arraylist


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR