Problème avec ArrayList - Java - Programmation
Marsh Posté le 04-02-2006 à 16:04:34
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.
Marsh Posté le 04-02-2006 à 16:25:30
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
Marsh Posté le 04-02-2006 à 18:02:56
moi je dirais que c'est génant parce que je sais parfaitement ce qu'il y a dedans.
Marsh Posté le 04-02-2006 à 18:07:15
et en java 1.5, en utilisant les types générics ca donnera ça :
Code :
|
Code :
|
Marsh Posté le 04-02-2006 à 19:10:25
et puis un beau jour tu veux faire un liste.toArray() et paf, il faut recaster ...
Marsh Posté le 04-02-2006 à 20:39:03
Taz a écrit : et puis un beau jour tu veux faire un liste.toArray() et paf, il faut recaster ... |
trop dur ...
Marsh Posté le 04-02-2006 à 20:54:41
ReplyMarsh Posté le 04-02-2006 à 20:55:08
(et accessoirement, Taz, ton opinion, on s'en bat les couilles, spécialement sur ce genre de topic, ou c'est completement hs)
Marsh Posté le 04-02-2006 à 21:55:45
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
Marsh Posté le 04-02-2006 à 21:56:50
ReplyMarsh Posté le 04-02-2006 à 22:04:27
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.
Marsh Posté le 04-02-2006 à 15:59:46
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