Tipps für das Klonen von Java-Objekten

Beim Verweisen von einer Referenz auf eine andere wird lediglich eine weitere Referenz auf dasselbe Objekt erzeugt. Eigens deswegen gibt es eine clone()-Methode für alle Referenztypen. Damit kann ein Objekt eine Kopie von sich selbst erzeugen. Es folgen hier und auf den nächsten Seiten die Einzelheiten, die für das Klonen von Java-Objekten wichtig sind.

Warum eine lokale Kopie anlegen?

Der wahrscheinlichste Grund für das Anlegen einer lokalen Kopie eines Objekts ist, dass die Kopie modifiziert und das Objekt für den Methoden-Aufruf nicht verändert werden soll. Wenn man beschließt, eine lokale Kopie anzulegen, kann dies mittels der clone()-Methode der Object-Klasse geschehen. Die clone()-Methode ist als geschützt eingestuft, muss aber in allen Unterklassen, die eventuell geklont werden sollten, als öffentlich eingestuft werden.

Die gewöhnliche Library-Klasse ArrayList setzt clone() zum Beispiel außer Kraft. So kann für ArrayList clone() wie folgt aufgerufen werden:

Die clone()-Methode erzeugt ein Objekt, das dem entsprechenden Typ angeglichen werden muss. Dieses Beispiel zeigt, wie die clone()-Methode von ArrayList nicht automatisch versucht, jedes Objekt zu klonen, das in ArrayList enthalten ist – die alte ArrayList und die geklonte sind mit denselben Objekten verknüpft. Dies wird oft eine flache Kopie genannt, da diese nur die „Oberfläche“ eines Objekts enthält. Das tatsächliche Objekt besteht aus dieser „Oberfläche“ sowie all den Objekten, auf die die Referenzen verweisen und all den Objekten, auf die jene Objekte wiederum verweisen, und so weiter. Dies wird häufig als „Objektnetz“ bezeichnet. Wird das Ganze kopiert, spricht man von einer „tiefen Kopie“.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Black Friday: Vorsicht vor schädlichen QR-Codes

Bösartige QR-Codes, die per E-Mail versendet werden, eignen sich sehr gut, um Spam-Filter zu umgehen.

1 Tag ago

Black Friday: Zahl der ominösen Shopping-Websites steigt

Unsichere Websites und Phishing-Mails in Verbindung mit Black Friday können kauffreudigen Konsumenten zum Verhängnis werden.

1 Tag ago

SmokeBuster bekämpft SmokeLoader

Malware SmokeLoader wird weiterhin von Bedrohungsakteuren genutzt, um Payloads über neue C2-Infrastrukturen zu verbreiten.

1 Tag ago

Taugen Kryptowährungen als Unterstützer der Energiewende?

Bankhaus Metzler und Telekom-Tochter MMS testen, inwieweit Bitcoin-Miner das deutsche Stromnetz stabilisieren könnten.

2 Tagen ago

Supercomputer-Ranking: El Capitan überholt Frontier und Aurora

Mit 1,7 Exaflops ist El Capitan nun der dritte Exascale-Supercomputer weltweit. Deutschland stellt erneut den…

2 Tagen ago

Ionos führt neue AMD-Prozessoren ein

Der deutsche Hyperscaler erweitert sein Server-Portfolio um vier Angebote mit den neuen AMD EPYC 4004…

2 Tagen ago