Rumah  >  Artikel  >  Java  >  Bagaimana untuk menggunakan kaedah clone() dalam Java dan bukannya kata kunci baharu?

Bagaimana untuk menggunakan kaedah clone() dalam Java dan bukannya kata kunci baharu?

WBOY
WBOYke hadapan
2023-04-22 19:55:061396semak imbas

Gunakan clone() dan bukannya baharu

Cara paling biasa untuk mencipta tika objek baharu dalam Java ialah menggunakan kata kunci baharu. Sokongan JDK untuk baharu sangat baik Apabila menggunakan kata kunci baharu untuk mencipta objek ringan, ia sangat pantas. Walau bagaimanapun, untuk objek berat, masa pelaksanaan pembina mungkin lebih lama kerana objek mungkin melakukan beberapa operasi yang kompleks dan memakan masa dalam pembina. Akibatnya, sistem tidak dapat memperoleh sejumlah besar kejadian dalam jangka pendek. Untuk menyelesaikan masalah ini, anda boleh menggunakan kaedah Object.clone().

Kaedah Object.clone() boleh memintas pembina dan menyalin contoh objek dengan cepat. Walau bagaimanapun, secara lalai, contoh yang dijana oleh kaedah klon() hanyalah salinan cetek objek asal.

Saya perlu menyebut di sini bahawa Java hanya memindahkan mengikut nilai mengenai perkara ini, pemahaman saya ialah jenis data asas merujuk kepada nilai, dan objek biasa juga merujuk kepada nilai yang dirujuk oleh objek biasa ini sebenarnya adalah sebuah alamat. Contoh kod:

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

Jika anda memerlukan salinan dalam, anda perlu melaksanakan semula kaedah klon(). Mari kita lihat kaedah clone() yang dilaksanakan oleh ArrayList:

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);         }     }

Dalam kaedah clone() ArrayList, mula-mula gunakan kaedah super.clone() untuk menjana objek salinan cetek. Kemudian salin tatasusunan elementData baharu untuk rujukan ArrayList baharu. Objek ArrayList yang diklonkan memegang rujukan yang berbeza daripada objek asal, merealisasikan salinan dalam.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan kaedah clone() dalam Java dan bukannya kata kunci baharu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam