Objekt "clonen" ?

schlumsch

Mitglied
Hallo allerseits,

eine kurze Frage zu Java-Objekten habe ich. Ich möchte ein Objekt "clonen". Genauer gesagt habe ich ein Objekt userC vom Typ UserContext.
Nun will ich einen weiteren UserContext erstellen, mit den Werten aus userC füllen und die Werte verändern, ohne jedoch gleichzeitig die Werte von userC zu ändern.

UserContext newUserC = new UserContext();
newUserC = userC;
newUserC.setIrgendwas(irgendwas);

bewirkt natürlich eine Änderung in beiden Objekten. Wie kann ich o.g. Verhalten implementieren (setIrgendwas nur auf newUserC)?

Thx a lot
 
Ok, danke erst einmal. Gibt es auch eine Möglichkeit eine referenzfreie Kopie eines Objektes zu erzeugen, ohne clone?
 
Also mir fallen da nur noch zwei Möglichkeiten ein.

a) Die "good old" C++ Methode mit einem Copy Constructor. Da erstellst du einfach einen Konstruktor und wirfst als Argument die Objektinstanz rein, die du clonen möchtest. Im Quelltext des Construktors kopierst du einfach alle Werte zu der "aktuellen, neuen" Objektinstanz

b) Das ist eine etwas unsaubere Methode und verlangt auch etwas Rechenzeit. Sie funktioniert über die Serialisierung eines Objektes. Ich habe sie unter Java noch nie benutzt, aber unter C#. Aber ich denke, dass es in Java genauso funktionieren wird.

Kurz gesagt: Du serialisierst eine Objektinstanz. Aus der Instanz werden Daten bzw. ein Memory Stream. Den Memory Stream kannst du dann wieder deserialisieren und dann mit der richtigen Klasse casten.
 

Neue Beiträge

Zurück