Tipps für das Klonen von Java-Objekten

Da die clone()-Methode geschützt ist, müssen die Sub-Klassen durch übergehen dieser geschützten Methode, es ausdrücklich zulassen mit einer öffentlichen Methode klonbar zu sein. Alle Collections-Klassen tun dies. Die Sub-Klasse muss zudem Clonable implementieren, damit der in Object.clone() voreingestellte Klon-Mechanismus arbeiten kann.

Liegt ein Objekt vor, das eine öffentliche clone()-Methode hat, jedoch zum Zeitpunkt des Kompilierens den Objekttyp nicht kennt, gibt es Probleme. Angenommen, x ist als Objekt deklariert, dann kann nicht einfach x.clone() augefrufen werden, da das Object.clone() geschützt ist. Wenn Clonable eine öffentliche clone()-Methode definieren würde, wäre ((Cloneable) x).clone() zu verwenden. Dies ist aber nicht der Fall. Eine Lösung besteht darin, alle Klassen aufzulisten, zu denen x zählen könnte.

Ein weiteres Problem entsteht beim Erzeugen einer tiefen Kopie eines komplexen Objekts. Dabei wird angenommen, dass die clone()-Methoden aller enthaltenen Objektvariablen ebenfalls tief kopiert werden. Diese Annahme ist zu unsicher. Man muss hier den Code in allen Klassen unter Kontrolle haben oder sicher wissen, dass alle am tiefen Kopiervorgang beteiligten Klassen diesen auf die richtige Weise ausführen.

Serialisierung

Eine Lösung für diese Probleme besteht darin, mittels Serialisierung zu klonen. Serialisierung wird gewöhnlich eingesetzt, um Objekte so zu versenden (etwa in eine Datei oder über das Netzwerk), dass jemand anderes sie später wieder rekonstruieren kann. Die Serialisierung kann aber auch dazu verwendet werden, das Objekt selbst unmittelbar zu rekonstruieren.

Wenn das Objekt überhaupt serialisiert werden kann, sollte es sich bei der Rekonstruktion um eine genaue Kopie handeln. Bei der üblichen Verwendung der Serialisierung befindet sich das ursprüngliche Objekt weit entfernt von allen genauen Kopien; es könnte sich auf der anderen Seite der Erde am Ende einer Netzwerkverbindung befinden. Man darf sicher sein, dass an der Kopie vorgenommene Änderungen keine Auswirkungen auf das Original haben werden.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Tipps für das Klonen von Java-Objekten

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *