Naja, ich denke das kommt immer drauf an, was man kopieren/klonen möchte.
Sagen wir mal du hast eine Klasse Test die im Konstruktor 2 integer erwartet, die in der Klasse als variable1 und variable2 deklariert sind. Die Werte können dann beispielsweise per getVariable1 und getVariable2 zurückgeliefert werden, wenn du jetzt also davon eine Kopie machen möchtest sollte sowas schon reichen:
Naja, ich denke das kommt immer drauf an, was man kopieren/klonen möchte.
Sagen wir mal du hast eine Klasse Test die im Konstruktor 2 integer erwartet, die in der Klasse als variable1 und variable2 deklariert sind. Die Werte können dann beispielsweise per getVariable1 und getVariable2 zurückgeliefert werden, wenn du jetzt also davon eine Kopie machen möchtest sollte sowas schon reichen:
Dir wird nichts anderes übrig bleiben als jedes Objekt einzeln zu kopieren:
Java:
importjava.util.ArrayList;importjava.util.List;publicclassListCloneTest{publicstaticvoidmain(String[] args)throwsCloneNotSupportedException{List<Test> l1 =newArrayList<Test>();List<Test> l2 =newArrayList<Test>();for(int i =0; i <5;++i){
l1.add(newTest(i));}for(int i =0; i <5;++i){
l2.add(l1.get(i).clone());}for(int i =0; i <5;++i){System.out.println("l1:"+ l1.get(i).i +", l2: "+ l2.get(i).i +", same obj: "+(l1.get(0)== l2.get(0)));}}}classTestimplementsCloneable{int i;publicTest(int i){this.i = i;}@OverrideprotectedTestclone()throwsCloneNotSupportedException{returnnewTest(i);}}
Der TO will sowohl die Liste als auch deren Elemente clonen, wenn ich ihn richtig verstanden hab. Bei der clone-Methode von ArrayList wird nur die Liste kopiert, nicht aber deren Elemente.
Was sind denn das jetzt für Objekte in der Liste und vor allem was für Objekte referenzierne die evtl. noch? Hänge an alle das Marker-Interface "Serializable" ran und serialisiere/deserialisiere einfach die Liste und gut ist...oder du musst eben selbst Hand anlegen
Was sind denn das jetzt für Objekte in der Liste und vor allem was für Objekte referenzierne die evtl. noch? Hänge an alle das Marker-Interface "Serializable" ran und serialisiere/deserialisiere einfach die Liste und gut ist...oder du musst eben selbst Hand anlegen
Nicht ganz. Der Trick den Schlonz zu serialisieren ist gut, das gibt ohne Aufwand einen echten Deep-Clone.
Man kann aber nicht einfach durch hinzufügen von Serializable eine Klasse serialisierbar machen.