Wie die Klon-Methode eine flache Kopie in Java zu erstellen

Das Klon Methode in Java erstellt manuell eine Kopie des ursprünglichen Objekts und gibt es zurück. In vielen Fällen ist dies der einfachste Weg, um einen Klon zu erzeugen. Aber was, wenn Ihre Klasse hundert oder mehr Felder hat, die dupliziert werden müssen?

Die Chance, zu vergessen, eines der Felder zu kopieren ist hoch, und wenn Sie später auf ein Feld der Klasse hinzufügen, können Sie vergessen, zu modifizieren Klon Methode das neue Feld aufzunehmen. Glücklicherweise können Sie dieses Problem lösen, indem sie die Verwendung von Klon Verfahren der Objekt Klasse direkt in Ihrem eigenen Klon Verfahren.

Das Klon Verfahren der Objekt Klasse kann automatisch eine Kopie des Objekts erstellen, die Duplikate aller Felder enthält, die primitive Typen (wie int und doppelt), Sowie Kopien von unveränderlichen Referenztypen - vor allem, Streicher. Also, wenn alle Felder in der Klasse sind entweder Primitiven oder Strings, können Sie mit dem Klon Verfahren durch die zur Verfügung gestellten Objekt Klasse Klasse zu klonen.

Diese Art von Klon wird als ein bekannter flache Kopie.

So rufen Sie die Klon Verfahren aus dem eigenen Klon Methode, geben Sie einfach super.clone (). Bevor Sie das tun können, müssen Sie jedoch zwei Dinge tun:

  • Erklären Sie, dass die Klasse unterstützt die klonbar Schnittstelle. Das klonbar Schnittstelle ist eine Markierungsschnittstelle, die keine Methoden bietet. Es markiert einfach eine Klasse als für das Klonen geeignet zu sein.

  • Setzen Sie den Anruf an super.clone () in einem try / catch Anweisung, die die Ausnahme abfängt CloneNotSupportedException. Diese Ausnahme wird ausgelöst, wenn Sie versuchen, zu nennen Klon auf eine Klasse, die nicht implementiert die klonbar Schnittstelle. Vorausgesetzt, dass Sie bei der Implementierung klonbar, Diese Ausnahme wird nicht immer passieren, sondern weil CloneNotSupportedException eine geprüfte Ausnahme ist, müssen Sie ihn zu fangen.

Hier ist ein Beispiel für ein Mitarbeiter Klasse mit einem Klon-Methode, die verwendet super.clone () zu klonen selbst:

Klasse Mitarbeiter implementiert klonbar {// Felder und Methoden weggelassen ... public Object clone () {Mitarbeiter emp-try {emp = (Mitarbeiter) super.clone () -} catch (CloneNotSupportedException e) {return Null- // wird nie passieren} return EMP-}}

Beachten Sie, dass diese Methode nicht sein muss bewusst eines der Felder in der angegebenen Mitarbeiter Klasse. Dies Klon Methode funktioniert jedoch nur für die Klassen, deren Felder sind alle entweder primitive Typen oder unveränderliche Objekte wie Strings.

Menü