Frage

Angenommen, Sie haben in Java eine Klasse, die ein umschließt ArrayList (oder eine beliebige Sammlung) von Objekten.

Wie würden Sie eines dieser Objekte zurückgeben, sodass der Aufrufer keine zukünftigen Änderungen an dem in der ArrayList vorgenommenen Objekt sieht?

d.h.Sie möchten eine tiefe Kopie des Objekts zurückgeben, wissen aber nicht, ob es klonbar ist.

War es hilfreich?

Lösung

Machen Sie daraus eine Spezifikation:
-Diese Objekte müssen eine Schnittstelle implementieren, um in die Sammlung so etwas wie möglich zu sein ArrayList<ICloneable>()

Dann können Sie sicher sein, dass Sie immer eine tiefe Kopie erstellen – die Schnittstelle sollte über eine Methode verfügen, die garantiert eine tiefe Kopie zurückgibt.

Ich denke, das ist das Beste, was Sie tun können.

Andere Tipps

Eine Möglichkeit ist die Verwendung der Serialisierung.Hier ist ein Blog-Beitrag, der es erklärt:

http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html

Ich nehme an, es ist eine offensichtliche Antwort:

Machen Sie eine Voraussetzung dafür, dass die in der Sammlung gespeicherten Klassen klonbar sind.Sie können dies zum Zeitpunkt des Einfügens oder zum Zeitpunkt des Abrufs überprüfen, je nachdem, was sinnvoller ist, und eine Ausnahme auslösen.

Oder wenn das Element nicht klonbar ist, greifen Sie einfach auf die Option „Return by Reference“ zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top