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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

3 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

3 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

4 Tagen ago

Gefährliche Anzeigen für Passwortmanager Bitwarden verbreiten Malware

Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…

4 Tagen ago

Public Cloud: Gartner erwartet 2025 weltweite Ausgaben von 723 Milliarden Dollar

Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.

4 Tagen ago

iPhone 15 ist bestverkauftes Smartphone im dritten Quartal

Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…

5 Tagen ago