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; }
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:
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!