Klon Objek Java ()

Kaedah Java Object clone () membuat salinan objek yang cetek.

Di sini, salinan cetek bermaksud membuat objek baru dan menyalin semua bidang dan kaedah yang berkaitan dengan objek tersebut.

Sintaks clone()kaedahnya adalah:

 object.clone()

klon () Parameter

The clone()kaedah tidak mengambil apa-apa parameter.

klon () Nilai Pulangan

  • mengembalikan salinan objek
  • lontaran CloneNotSupportedExceptionsekiranya kelas objek tidak melaksanakan Cloneableantara muka

Catatan : ObjectKelas tidak dilaksanakan Cloneable. Oleh itu, kita tidak dapat memanggil clone()kaedah 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 merangkumi dua nama dan versi bidang. Di sini, kami telah menginisialisasi medan kelas menggunakan objek obj1 kelas.

Perhatikan garis,

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

Di sini, kami telah menggunakan clone()kaedah untuk membuat salinan obj1. Nilai yang dikembalikan clone()diberikan kepada objek obj2. Oleh kerana nilai kembali clone()adalah Objectjenis, kami telah menggunakannya (Main)untuk menukarnya menjadi Jenis utama.

Sekarang nama dan versi bidang dapat diakses menggunakan obj2 objek. Tetapi jika kita mengubah nilai medan menggunakan obj2, nilai yang berkaitan dengan obj1 tidak akan berubah.

Contoh 2: Menukar 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 garis,

 obj2.name = "Python";

Di sini, kami telah mengubah nilai pemboleh ubah menggunakan obj2. Sekarang apabila kita mencetak nama pemboleh ubah untuk kedua-dua obj1 dan obj2, kita dapat melihat bahawa nilai untuk obj1 tidak berubah. Ini kerana clone()kaedah membuat salinan objek yang cetek.

Untuk mengetahui lebih lanjut mengenai salinan cetek, kunjungi Apa itu Salinan Cetek di Jawa?

Kami telah melampirkan clone()metode di dalam Java try… catch block. Ini kerana subkelas dapat membuang pengecualian jika objek tidak dapat diklon.

Catatan : ObjectKelas ini adalah kelas super untuk semua kelas di Java. Oleh itu, setiap kelas dan susunan dapat melaksanakan clone()kaedah tersebut.

Artikel menarik...