un exemple qui reproduit mon problème :
et la classe test
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 public class Bidon { private int[][] tableau = new int [2][2]; public Bidon (int [][] newTableau) { tableau = newTableau; } public void modifyTab() { tableau[0][0] += 1; } public int[][] getTab() { return tableau; } public void test() { Bidon temp = new Bidon(this.tableau.clone()); temp.modifyTab(); System.out.println(tableau[0][0]+" "+temp.getTab()[0][0]); } }
j'ai epluché plusieurs article sur clone(), mais aucun ne resoud vraiment le problème de cette maniere (et on comprend pourquoi vu que ca ne marche po) . pourtant ca me semble logique , mais avec tout ces pointeurs caché je ne sais plus vraiment ce que je manipule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class TestBidon { public static void main(String[] args){ int[][] newtab = {{1,2},{3,7}}; Bidon tab = new Bidon(newtab); tab.test(); } }
merci d'avance
[ Modéré par SEMPERE Benjamin ]
Ajout des balises code
Les Règles du Forum







Répondre avec citation







je ne suis pas d'accord, ce comportement est indéfini et est laissé au bon vouloir des classes redéfinissant la méthode clone. Par exemple, la plupart des listes (LinkedList, ArrayList, ...), lors du clonage, ne clonent pas leurs éléments (et oui... une simple copie de référence)



quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez 
Partager