Die Methode, die aufgerufen wird, wenn ein Objekt in Java geklont wird, ist die Methode clone()
. Sie ermöglicht es uns, ein bestehendes Objekt zu duplizieren, indem eine neue Instanz erstellt und die Werte aus dem ursprünglichen Objekt in das neue Objekt kopiert werden. Dabei entspricht der Zustand des neu erstellten Objekts dem des ursprünglichen Objekts zur Zeit des Klonens.
Angenommen, wir haben eine Klasse Person
:
class Person implements Cloneable {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
public Object clone()throws CloneNotSupportedException{
return super.clone();
}
}
Nun können wir ein Objekt der Klasse Person
erstellen und es dann klonen:
Person p1 = new Person("John", 30);
Person p2 = (Person)p1.clone();
Im obigen Code wird p1.clone()
aufgerufen und ein neues Objekt p2
erstellt, das eine Kopie von p1
ist. Beide Objekte sind unabhängig voneinander.
clone()
zu nutzen. Wenn dies nicht geschieht und Sie die clone()
Methode aufrufen, wirft Java eine CloneNotSupportedException
.clone()
-Methode in der Klasse Object protected
, was bedeutet, dass sie nur innerhalb der Klasse selbst und in ihren Subklassen aufgerufen werden kann. Wenn Sie die clone()
Methode in einer anderen Klasse aufrufen möchten, müssen Sie sie in Ihrer Klasse überschreiben und ihre Sichtbarkeit auf public
ändern.Die clone()
Methode ist eine effektive Möglichkeit, Objekte in Java zu duplizieren, ihr Gebrauch sollte jedoch mit Bedacht erfolgen, da sie auch gewisse Risiken birgt, etwa in Bezug auf Sicherheit und Kapselung. Es ist immer ratsam, die Methoden equals()
und hashCode()
zu überschreiben, wenn die Methode clone()
überschrieben wird, um die Konsistenz zu gewährleisten und unerwartetes Verhalten zu vermeiden.