# Serialisierung und Klonen in Java



## mmeyer1987 (9. Nov 2009)

Moin,

Ich hänge an einem Problem, weiß aber nicht wie ich das lösen soll, ich versuch es mal zu beschreiben.

Wie kann ich ein Objekt einer Klasse, dessen Implementierung ich nicht kenne oder manipulieren kann, klonen? 

Ich will eine lokale Kopie des Objektes in meiner Methode anlegen. Dieses schlägt aber fehl, weil komplexe Attribute des Objektes nicht serialisierbar sind, die Attribute sind nach dem Klonen alle <null>.

Wie geht man da am besten vor? ???:L Wie gesagt, kann ich die Klassen-Implementierung nicht ändern.  :bahnhof:

Grüße,

mmeyer


----------



## The_S (9. Nov 2009)

Du könntest es über reflection lösen. Ist allerdings nicht gerade ellegant und performant.


----------



## mmeyer1987 (9. Nov 2009)

Wie würde das denn so ungefähr aussehen? Es wäre auch nur eine Übergangslösung, bis das ganze mal ordentlicher aufgebaut wird.


----------



## The_S (9. Nov 2009)

Du iterierst über alle Attribute des Objekts und kopierst den Wert in das entsprechende Attribut des neuen Objekts. Ist ein Attribut selbst ein Objekt, muss dieses natürlich rekursiv ebenfalls neu erzeugt und kopiert werden.

Alles in allem kann das aufwändig werden.


----------



## mmeyer1987 (9. Nov 2009)

Uff, ja, verstehe ich! Danke dir für den Ansatz. Aber Recht hast du, das ist irgendwie nicht sauber und ziemlich aufwändig  :autsch: Naja, ich schau mal... Danke dir!


----------



## FArt (9. Nov 2009)

Ich wage zu bezweifeln, dass es für diese Anforderung einen generischen Weg gibt. Evtl. gibt es eine Lösung (mit großem Aufwand), wenn du alle Objekte kennst. Auch dann musst du vorher sicherstellen können, dass von dieser Klasse theoretisch überhaupt eine Kopie existieren kann. Wovon sollte es z.B. keine Kopien geben? Singletons, Serversockets, ...


----------

