Une Map/List contient-elle une "référence vers" ou l'objet lui même ? - Java - Programmation
Marsh Posté le 19-04-2006 à 17:34:43
Tu ne manipules tes objets que via des références en java. Donc ce que tu vois est tout à fait normal.
Quelques pistes :
- être Cloneable (pour faire une copie, et la modifier)
- être immutable (ne peux être modifer). Tu instancies donc à chaque fois une nouvelle instance avec en paramètre du constructeur de nouvelles valeurs.
Marsh Posté le 19-04-2006 à 18:02:04
Ok je venais de trouver :
Un objet est un espace mémoire sur lequel vient pointer une référence. Tout n'est donc que référence vers une même zone mémoire. (quand on parle du même objet bien entendu). C'est évident maintenant que je le sais et ma question me paraît bien bête :-/
Merci pour les pistes, ca pourrait m'être utile !
Marsh Posté le 19-04-2006 à 18:04:29
Oui, mais alors pourquoi quand il met un objet à null, cela ne se voit pas dans l'ArrayList et la HashMap?
Marsh Posté le 19-04-2006 à 18:22:55
Bon, imaginons que "Mr objun" pointes du doigt sur un objet autour de lui.
Code :
|
Après, quelqu'un dit à "Mr List" : regarde "Mr objun" et fais comme lui dans ta première case libre.
Code :
|
Ensuite, on dit à "Mr objun" : arrête de pointer du doigt, c'est mal élevé.
Code :
|
Au final, "Mr Tableau" pointera toujours vers l'objet.
Est-ce clair ?
L'objet n'est pas touché en lui même, c'est un jeu de pointeurs. Et dès qu'un objet cesse d'être pointé, il est tout malheureux donc il part avec le Garbage Collector.
Marsh Posté le 19-04-2006 à 17:00:03
Bonjour,
C'est une question basique que je viens de me poser, mais la réponse est trés importante pour moi.
Prenons le code suivant :
(UnObjet est une classe dont le constructeur instancie une variable d'instance "name", accessible et modifiable grâce à getName() et setName() )
Donc mon problème, c'est que tout semble se dérouler comme si la HashMap et la ArrayList contenaient des références vers les objets (puisque lorsque l'on modifie ces objets, l'affichage des objets récupérés dans les conteneurs est elle aussi modifiée) mais lorsque je met un objet à null, cela ne semble pas déranger mes conteneurs plus que ca...
En clair, ma question est : les conteneurs de type Map et List contiennent ils une copie de l'objet où une référence vers cet objet ? C'est important, je n'ai pas envie de faire des doublons et d'exploser la mémoire...
Si quelqu'un pouvait me dire ce qu'il en sait :-)
Merci !
Message édité par ikao2 le 19-04-2006 à 17:01:22