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.
Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.
Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…
Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…
Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…
Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.
Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…