Bonjour,
Dans le cadre d'un projet, j'ai dû développer un composant graphique chargé de représenter graphiquement des objets.
Il correspond donc à la vue dans le modèle MVC. A sa construction, je lui passe une liste d'objets: ceux qu'il devra afficher.
Le modèle, lui, gère la liste des objets et leur position. A ma grande surprise, lorsque je modifie la liste dans le modèle (ajout d'éléments, suppression, modification, etc..), la vue n'en est pas informée.
Je connais le design pattern observable/observateur, mais j'aurais aimé m'en passer pour une opération aussi simple. En effet, dans mon programme principal, j'utilise le code suivant:
[code]
vue v = new vue( modele.getListe() )
[code]
où getListe est un simple accesseur à une synchronizedList (cependant, retournée sous forme de Collection).
J'étais donc persuadé qu'en faisant cela, je passait un pointeur vers la liste du modèle, et donc que la vue et le modèle partageraient la même liste! Or, il semblerait que cela ne soit pas le cas...
Du coup, je ne comprend plus rien à Java: depuis quand l'opérateur = réalise-t-il des copies?!
Merci
Cordialement
Partager