J'ai essayé de cloner l'objet de Test2 en utilisant la méthode "KUROONN". Je m'attendais à ce que la deuxième ligne de la sortie lise [0,0], mais le résultat réel montre [33,4]. Je ne sais pas pourquoi cela arrive, alors quelqu'un peut-il expliquer cela?JAVA il ne clone pas bien
import java.util.ArrayList;
class Test {
public static ArrayList<Integer> T=new ArrayList<Integer>();
}
class Test2 {
int Test2Int;
ArrayList<Integer> Test2List;
public Test2(int K,ArrayList<Integer> A) {
this.Test2Int=K;
this.Test2List=A;
}
public Test2 KUROONN() { //broken clone
Test2 b=new Test2(0,Test.T);
b.Test2Int=this.Test2Int;
System.out.println(b.Test2List);
for(int i=0;i<this.Test2List.size();i++) {
b.Test2List.add(this.Test2List.get(i));
}
return b;
}
}
public class testtube001a {
public static void main (String args[]){
ArrayList<Integer> n =new ArrayList<Integer>();
n.add(33);
n.add(4);
ArrayList<Integer> m =new ArrayList<Integer>();
m.add(114);
m.add(514);
Test2 t2_1=new Test2(72,n);
Test2 t2_2=new Test2(1919,m);
t2_1.KUROONN();
t2_2.KUROONN();
}
}
La sortie du programme est:
[]
[33, 4]
Pourquoi attendez-vous la sortie [0,0]? Vous ne mettez jamais cela aussi loin que je vois. De plus, n'utilisez pas Test, Test2 comme nom de classe, puis nommez les variables Test2Int. Même si le code est relativly simple, il est assez difficile à comprendre. Et l'ArrayList en classe Test statique pour une raison spécifique? Parce que sinon je supprimerais cette chose en premier. –
Désolé pour mon erreur. Je voulais dire que je m'attendais []. Et ce code était censé être juste un test de débogage pour un plus gros code que je fais, alors j'ai juste utilisé des tests pour les noms. Vraiment désolé. –