Heim > Java > javaLernprogramm > Sollten Sie die Java-Methode „clone()' überschreiben, und wenn ja, wie?

Sollten Sie die Java-Methode „clone()' überschreiben, und wenn ja, wie?

Linda Hamilton
Freigeben: 2024-12-01 02:01:10
Original
1000 Leute haben es durchsucht

Should You Override the Java `clone()` Method, and If So, How?

Überschreiben der Klonmethode: Best Practices erkunden

Ab Java erben alle Klassen von der Object-Klasse, sodass das Überschreiben der Klonmethode obligatorisch ist. Dieser Prozess kann jedoch kompliziert sein, vor allem aufgrund der potenziellen CloneNotSupportedException-Umwandlung aus der Implementierung der Object-Klasse.

Ein gängiger Ansatz, der von Kollegen vorgeschlagen wird, besteht darin, die Ausnahme innerhalb der Klonmethode zu behandeln:

@Override
public MyObject clone() {
    MyObject foo;
    try {
        foo = (MyObject) super.clone();
    } catch (CloneNotSupportedException e) {
        throw new Error();
    }

    // Deep clone member fields here

    return foo;
}
Nach dem Login kopieren

Dieser Ansatz ist nicht optimal. Wie der Branchenexperte Josh Bloch betont, ist die Klonmethode von Java grundsätzlich fehlerhaft. Anstatt sich auf das Klonen zu verlassen, wird empfohlen, praktikable Alternativen wie Kopierkonstruktoren oder Kopierfabriken in Betracht zu ziehen.

Alternative Ansätze:

  • Kopierkonstruktor : Definieren Sie manuell einen Konstruktor in Ihrer Klasse, der ein Objekt desselben Typs als Parameter akzeptiert und das aktuelle Objekt mit initialisiert seine Felder.
  • Copy Factory: Erstellen Sie eine statische Methode innerhalb Ihrer Klasse, die ein Objekt als Parameter akzeptiert und ein neues Objekt zurückgibt, das mit den Feldern des Eingabeobjekts initialisiert ist.

Wenn das Klonen erforderlich ist:

In Fällen, in denen das Überschreiben der Klonmethode erforderlich ist Wenn dies unvermeidbar ist, stellen Sie sicher, dass Ihre Klasse Object erweitert und Cloneable implementiert. Dies garantiert, dass niemals eine CloneNotSupportedException ausgelöst wird. Anstatt die Ausnahme abzufangen, sollten Sie aus Gründen der Klarheit einen Kommentar hinzufügen, der dieses Verhalten erklärt.

Alternativ können Sie die Klonmethode implementieren, ohne super.clone aufzurufen, wie von anderen StackOverflow-Mitwirkenden vorgeschlagen.

Das obige ist der detaillierte Inhalt vonSollten Sie die Java-Methode „clone()' überschreiben, und wenn ja, wie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage