Bonjour,
J'ai un problème qui me semble bizzard et je cherche une explication.
J'ai une liste d'elements qui doivent chacun avoir une valeur differente pour un attribut donné. Pour la remplir, j'utilise une variable tempon que je met à jour à chaque iteration. Le probleme est le suivant : dès que je me à jour le tempon, les premières éléments insérés dans la liste se mettent à jour. Un comportement très imprevu? Voir le code joint
Quelqu'un a t-il une explication?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public class BeanA { private int a; .... public void setA(int a){ this.a=a; } } public class BeanB{ private A retainedA; private List<A> aMemebers = new ArrayList<A>(); .... // getters, setters et autres ... } public class C { private List<BeanB> processed = new ArrayList<BeanB>(); private List<BeanB> pending = new ArrayList<BeanB>(); .... // getters, setters et autres ... public List<C> branch(){ BeanB selected = pending.get(0); List<C> children = new ArrayList<C>(); for(A e : selected.getAMemebers()){ C child = new C(); selected.setRetainedA(e); // L'objectif est que chaque child ait un retainedA different et le probleme est que dans la liste children tous les elements ont la meme valeur de retainedA qui correspod à la valeur de dernier child. child.getProcessed().addAll(processed); child.getProcessed().add(selected); child.getPending().addAll(pending); child.getPending().remove(0); children.add(child); } } }
Partager