clone() ?

Status
Nicht offen für weitere Antworten.

Verjigorm

Top Contributor
Hallo,

ich wollte grad eins meiner Datenobjekte klonen, welches dann bearbeitet werden kann, ohne die Originaldaten zu beeinflussen.

Nun musste ich ziemlich schnell feststellen, dass der Klon kein wirklicher Klon ist, sondern nur ein schlechter Abklatsch.
Zum wirklichen "klonen" muss man alles von Hand in der clone-Methode implementieren.
Sämtliche Listen-Inhalte etc. per Schleifen kopieren etc.

Nun frage ich mich:
wozu der ganze Aufwand?
Ich finde im Endeffekt bringt mir dieses Interface absolut null, da ich eh alles von Hand implementieren muss.
Da kann ich genausogut eine copy()-Methode schreiben, in der ich mir ein neues Objekt zurückgeben lasse mit allen Werten drin, dann brauch ich das blöde Interface nicht.

Bringt mir das Interface irgendwelche Vorteile, die ich bisher nicht gesehen habe?
Ich frage mich, wofür man eine Kopie gebrauchen könnte, die die selben Variablen wie das Ursprungsobjekt benutzt?
Ich finde dafür eigentlich keine logische Anwendung

mfg Verjigorm
 

Wildcard

Top Contributor
Es gibt die Anwendungsfälle, aber clone wird zu recht häufig kritisiert. Besser sind oft Copy-Konstruktoren.
 
M

maki

Gast
Verjigorm hat gesagt.:
Aber ich muss trotzdem alles von Hand implementieren?
Wenn du mehr willst als zB. Strings etc. zu klonen dann ja ;)

Gibt natürlich noch sehr unperformante aber dafür einfache Wege zu "klonen", zB. per Serialisierung, aber sobald es komplexer wird musst du es wieder selbst machen, was aber gar nicht schlimm ist;)
 

FArt

Top Contributor
maki hat gesagt.:
Verjigorm hat gesagt.:
Aber ich muss trotzdem alles von Hand implementieren?
Wenn du mehr willst als zB. Strings etc. zu klonen dann ja ;)

Gibt natürlich noch sehr unperformante aber dafür einfache Wege zu "klonen", zB. per Serialisierung, aber sobald es komplexer wird musst du es wieder selbst machen, was aber gar nicht schlimm ist;)

Sehr unperformant ist etwas übertrieben und muss ins Verhältnis zur Mächtigkeit gesetzt werden. Ich habe mir zu diesen Zwecken einen SerializableDeepCloner gebaut, der im Speicher (flach oder mit Pipes) oder über Platte klonen kann, dafür aber beliebige Konstruke (sofern serialisierbar). Da wo man das braucht, ist der Perfromanceverlust gegenüber dem Ergebnis zu vernachlässigen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben