Heim  >  Artikel  >  Java  >  Wie verwende ich die clone()-Methode in Java anstelle des neuen Schlüsselworts?

Wie verwende ich die clone()-Methode in Java anstelle des neuen Schlüsselworts?

WBOY
WBOYnach vorne
2023-04-22 19:55:061396Durchsuche

Verwenden Sie clone() anstelle von new

Die häufigste Methode zum Erstellen einer neuen Objektinstanz in Java ist die Verwendung des Schlüsselworts new. Die Unterstützung von new durch JDK ist sehr gut. Die Verwendung des Schlüsselworts new zum Erstellen leichter Objekte ist sehr schnell. Bei schweren Objekten kann die Ausführungszeit des Konstruktors jedoch länger sein, da das Objekt möglicherweise einige komplexe und zeitaufwändige Vorgänge im Konstruktor ausführt. Dadurch kann das System kurzfristig keine große Anzahl an Instanzen erhalten. Um dieses Problem zu lösen, können Sie die Methode Object.clone() verwenden. Die Methode

Object.clone() kann den Konstruktor umgehen und eine Objektinstanz schnell kopieren. Standardmäßig ist die von der clone()-Methode generierte Instanz jedoch nur eine flache Kopie des Originalobjekts.

Ich muss hier erwähnen, dass Java nur nach Wert überträgt. Mein Verständnis ist, dass sich grundlegende Datentypen auf Werte beziehen, und dass sich gewöhnliche Objekte auch auf Werte beziehen. Der Wert, auf den dieses gewöhnliche Objekt verweist, ist jedoch tatsächlich die Adresse eines Objekts. Codebeispiel:

int i = 0; int j = i; //i的值是0  User user1 = new User();  User user2 = user1; //user1值是new User()的内存地址

Wenn Sie eine tiefe Kopie benötigen, müssen Sie die Methode clone() erneut implementieren. Werfen wir einen Blick auf die von ArrayList implementierte clone()-Methode:

public Object clone() {                try {             ArrayList<?> v = (ArrayList<?>) super.clone();             v.elementData = Arrays.copyOf(elementData, size);             v.modCount = 0;                         return v;         } catch (CloneNotSupportedException e) {                         // this shouldn't happen, since we are Cloneable             throw new InternalError(e);         }     }

In der clone()-Methode von ArrayList verwenden Sie zunächst die super.clone()-Methode, um ein flaches Kopierobjekt zu generieren. Kopieren Sie dann ein neues elementData-Array, auf das die neue ArrayList verweisen soll. Sorgen Sie dafür, dass das geklonte ArrayList-Objekt andere Referenzen als das Originalobjekt enthält, wodurch eine tiefe Kopie realisiert wird.

Das obige ist der detaillierte Inhalt vonWie verwende ich die clone()-Methode in Java anstelle des neuen Schlüsselworts?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen