Klon Objek Java ()

Metode Java Object clone () membuat salinan objek yang dangkal.

Di sini, salinan dangkal berarti membuat objek baru dan menyalin semua bidang dan metode yang terkait dengan objek.

Sintaks dari clone()metode ini adalah:

 object.clone()

clone () Parameter

The clone()Metode tidak mengambil parameter apapun.

clone () Mengembalikan Nilai

  • mengembalikan salinan objek
  • melempar CloneNotSupportedExceptionjika kelas objek tidak mengimplementasikan Cloneableantarmuka

Catatan : ObjectKelas tidak diimplementasikan Cloneable. Oleh karena itu, kita tidak dapat memanggil clone()metode untuk objek Objectkelas.

Contoh 1: Klon Java ()

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 ) catch (Exception e) ( System.out.println(e); ) ) )

Dalam contoh di atas, kami telah membuat kelas bernama Main. Kelas tersebut mencakup dua nama bidang dan versi. Di sini, kami telah menginisialisasi bidang kelas menggunakan objek obj1 kelas.

Perhatikan garisnya,

 Main obj2 = (Main)obj1.clone();

Di sini, kami telah menggunakan clone()metode untuk membuat salinan obj1. Nilai yang dikembalikan oleh clone()ditugaskan ke objek obj2. Karena nilai kembalian dari clone()adalah Objecttipe, kami telah menggunakannya (Main)untuk mengubahnya menjadi tipe Utama.

Sekarang nama dan versi field dapat diakses menggunakan objek obj2. Namun jika kita mengubah nilai bidang menggunakan obj2, nilai yang terkait dengan obj1 tidak akan berubah.

Contoh 2: Mengubah nilai menggunakan objek kloning

 class Main implements Cloneable ( // declare variables String name; int version; public static void main(String() args) ( // create an object of Main class Main obj1 = new Main(); // initialize name and version using obj1 obj1.name = "Java"; obj1.version = 14; // print variable System.out.println(obj1.name); // Java System.out.println(obj1.version); // 14 try ( // create a clone of obj1 Main obj2 = (Main)obj1.clone(); // print the variables using obj2 System.out.println(obj2.name); // Java System.out.println(obj2.version); // 14 // changing value of name // using obj2 obj2.name = "Python"; System.out.println(obj2.name); // Python // check if value associated // with obj1 is changed System.out.println(obj1.name); // Java ) catch (Exception e) ( System.out.println(e); ) ) )

Perhatikan garisnya,

 obj2.name = "Python";

Di sini, kami telah mengubah nilai variabel menggunakan obj2. Sekarang ketika kita mencetak nama variabel untuk obj1 dan obj2, kita dapat melihat bahwa nilai untuk obj1 tidak berubah. Itu karena clone()metode membuat salinan dangkal dari objek.

Untuk mempelajari lebih lanjut tentang salinan dangkal, kunjungi Apa itu Salinan Dangkal di Java?

Kami telah menyertakan clone()metode di dalam blok coba … menangkap Java. Itu karena subclass bisa memunculkan eksepsi jika objek tidak bisa di-clone.

Catatan : ObjectClass tersebut adalah superclass untuk semua class di Java. Karenanya, setiap kelas dan array dapat mengimplementasikan clone()metode ini.

Artikel yang menarik...