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

  FORUM HardWare.fr
  Programmation
  Java

  Problème avec ArrayList

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec ArrayList

n°1299067
Cat Mary
Posté le 04-02-2006 à 15:59:46  profilanswer
 

Bonjour,
 
 
Je possède une classe personne et une classe Annuaire.
La classe Personne contient les attributs : nom, prénom et tel, toute simple.
Dans ma classe Annuaire, j'ai crée un tableau de personne :
private ArrayList liste;
 
Quand j'écris :
Personne pers = new Personne();
pers = liste.get(i);
il me met type incompatible et je ne comprend pas pourquoi.
 
Alors que quand je veux remplacer un élément du tableau, le type personne ne le dérange pas :
liste.set(index,pers);
 
Merci d'avance pour votre aide

mood
Publicité
Posté le 04-02-2006 à 15:59:46  profilanswer
 

n°1299068
Taz
bisounours-codeur
Posté le 04-02-2006 à 16:01:53  profilanswer
 

bah tu cast

n°1299070
Cat Mary
Posté le 04-02-2006 à 16:02:32  profilanswer
 

désolé mais je ne comprends pas... débutante...

n°1299072
Taz
bisounours-codeur
Posté le 04-02-2006 à 16:04:34  profilanswer
 

en java 1.4, les java.util.* ne gèrent que des Object bruts.
 
Object List.get(int i);
 
donc faut caster
 
Personne p = (Personne)liste.get(0);
 
bienvenue dans le typage de merde de java.

n°1299073
Cat Mary
Posté le 04-02-2006 à 16:05:05  profilanswer
 

ah ok, merci

n°1299078
trevor
laissez la vie vous étonner...
Posté le 04-02-2006 à 16:25:30  profilanswer
 

comme précédemment dit, la méthode get() te renvoie un Object. bah oui, car les ArrayList c'est pour mettre n'importe quel type d'objet dans une liste de taille dynamique. donc les méthodes donnant accès aux éléments de la liste renvoient des objet.
il faut donc transtyper (= caster), mais c'est pas genant dans la mesure où tu sais que ta ArrayList contient bien le type avec lequel tu castes

n°1299104
Taz
bisounours-codeur
Posté le 04-02-2006 à 18:02:56  profilanswer
 

moi je dirais que c'est génant parce que je sais parfaitement ce qu'il y a dedans.

n°1299107
benou
Posté le 04-02-2006 à 18:07:15  profilanswer
 

et en java 1.5, en utilisant les types générics ca donnera ça :  
 

Code :
  1. private List<Personne> liste;  // tant qu'à faire, autant déclarer sous forme de List plutôt qu'ArrayList


 

Code :
  1. // l'initialisation de la liste se ferra comme ça :  
  2. liste = new ArrayListe<Personne>();
  3. // et ton code :  
  4. Personne pers; // ca sert à rien de créer un new Personne puisque tu t'en sers pas
  5. pers = liste.get(i); // maintenant ca marche vu que java sait que ta liste contient des Personne
  6. liste.set(index,pers); // ça ca marche comme avant ...


Message édité par benou le 04-02-2006 à 18:07:28
n°1299136
Taz
bisounours-codeur
Posté le 04-02-2006 à 19:10:25  profilanswer
 

et puis un beau jour tu veux faire un liste.toArray() et paf, il faut recaster ...

n°1299160
benou
Posté le 04-02-2006 à 20:39:03  profilanswer
 

Taz a écrit :

et puis un beau jour tu veux faire un liste.toArray() et paf, il faut recaster ...


trop dur ...

mood
Publicité
Posté le 04-02-2006 à 20:39:03  profilanswer
 

n°1299162
the real m​oins moins
Posté le 04-02-2006 à 20:54:41  profilanswer
 

(et euh, non, faut pas)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1299163
the real m​oins moins
Posté le 04-02-2006 à 20:55:08  profilanswer
 

(et accessoirement, Taz, ton opinion, on s'en bat les couilles, spécialement sur ce genre de topic, ou c'est completement hs)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1299170
Taz
bisounours-codeur
Posté le 04-02-2006 à 21:47:59  profilanswer
 

tiens tu vois, toi aussi tu en donnes une.

n°1299173
masklinn
í dag viðrar vel til loftárása
Posté le 04-02-2006 à 21:55:45  profilanswer
 

Ah ben oui mais -- la cat java c'est chez lui, toi c'est la cat c++, donc il a le droit et toi pas [:klem3i1]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1299174
the real m​oins moins
Posté le 04-02-2006 à 21:56:50  profilanswer
 

[:icon5]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1299181
Taz
bisounours-codeur
Posté le 04-02-2006 à 22:04:27  profilanswer
 

C'est juste que récemment, j'ai fait des développements en java 1.5, et j'ai été surpris par certains "trous" dans les nouvelles API avec contraintes de type. De même que je n'ai pas compris pourquoi certains warnings/erreurs sont désactivés par défaut ... d'habitude la moindre broutille et javac refuse de compiler. Là, avec les contraintes de type, on peut faire faire bouffer absolument n'importe quoi tant qu'on active pas -Xlint:unchecked. Mais bon, c'est quand même un mieux.


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

  Problème avec ArrayList

 

Sujets relatifs
Problème avec jexcelapiProblème avec une requête
probleme JPOXEclipse, problème de dépendance en C++
Problème avec des images sous IE [Résolu]Probleme d'indirection sur structures
[PHP] mail avec pieces jointes ! probleme avec Lotus Notes [RESOLUT]Problème d'alignement avec IE (très bizarre) Code Inside
probleme images reactives sous IEProblème pour un code sous VBnet
Plus de sujets relatifs à : Problème avec ArrayList


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)