Apa itu Pengklonan di Jawa dan Jenisnya?



Artikel mengenai Kloning di Java ini akan memberi anda gambaran terperinci mengenai proses Pengklonan dan berbagai jenis pengklonan yang didukung oleh Java.

Semasa memprogram, seringkali kita menemui senario di mana kita perlu menggunakan semula kod yang lengkap. Menulis semula kod menjadikan program menjadi besar, namun mengurangkan kecekapan program. Oleh itu, Java memberikan kita satu ciri yang sangat baik yang menyelamatkan adalah dari tugas yang membebankan ini. Ini dikenali sebagai Pengklonan di Jawa dan melalui media artikel ini, saya akan memberi anda gambaran lengkap mengenainya.

Berikut adalah topik yang akan saya bincangkan dalam artikel ini:





Pengklonan di Jawa

Pengklonan objek di Java adalah proses membuat salinan tepat dari objek asal. Dengan kata lain, ini adalah cara untuk membuat objek baru dengan menyalin semua data dan atribut dari objek asal. Ini hanya mungkin dilakukan dengan menerapkan kaedah clone () dari java.lang.Object kelas. Kaedah klon membuat salinan objek yang tepat untuknyadipanggil dalam urutan tugasan bidang demi bidang dan akan mengembalikan rujukan objek baru . Satu perkara yang mesti anda ingat, di Java, objek yang melaksanakan antara muka klon yang merupakan antara muka penanda dibenarkan menggunakan klon ().

perpuluhan hingga kod python binari

Sekarang setelah anda mengetahui apa yang pengklonan di Java mari kita lihat pelbagai kelebihan menggunakan fitur ini.



Kelebihan Pengklonan di Jawa

Di bawah ini saya telah menyenaraikan beberapa ciri penggunaan kloning di Java yang paling menarik.

  • Membantu mengurangkan garis kod.
  • Kaedah penyalinan yang paling berkesan dan cekapbenda.
  • Juga, klon () dianggap sebagai kaedah terpantas untuk menyalin array.

Catatan: Walaupun menggunakan pengklonan dapat mengakibatkan beberapa masalah reka bentuk tetapi jika Anda menggunakannya dengan cara strategi yang tepat, ia dapat memberi manfaat kepada Anda.

Jenis Pengklonan di Jawa

Pengklonan di Java dapat dikelompokkankepada dua kategori:



  1. Pengklonan Cetek
  2. Pengklonan Dalam

Mari kita fahami masing-masing satu persatu.

Pengklonan Cetek

Di Jawa, ketika proses pengklonan dilakukan dengan menggunakan metode klon () disebut Shallow Cloning. Ini adalah proses pengklonan lalai di Java di mana salinan cetek objek asal akan dibuat dengan bidang yang tepat. Sekiranya objek asal mempunyai rujukan ke beberapa objek lain sebagai bidang, maka hanya rujukan objek tersebut yang akan diklon dan bukan penciptaan objek baru. Dengan kata lain, jika anda mengubah nilai objek yang diklon maka ia akan tercermin pada yang asli juga. Oleh itu, pengklonan cetek bergantung pada objek asal.

apakah kaedah maya

salinan cetek - Pengklonan di Jawa - EdurekaDi bawah ini saya telah memberikan contoh yang sama:

pakej edureka class EduCourse {String course1 String course2 String course3 public EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3}} kelas EduLearner menerapkan Cloneable {int eduId String learner EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName this.eduCourse = eduCourse} // Versi lalai dari klon () kaedah dilindungi Objek klon () melemparkan kembali CloneNotSupport .clone ()}} kelas awam ShallowCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner pelajar1 = EduLearner baru (2811, 'Max') , j2ee) EduLearner learner2 = null try {// Membuat klon pelajar1 dan memberikannya kepada pelajar2 pelajar2 = (EduLearner) pelajar1.clone ()} menangkap (CloneNotSupportedException e) {e.printStackTrace ()} // Mencetak Butiran Pelajar Sistem.out.p rintln ('Detail of Learner 2:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Name:' + learner1.learnerName) System.out.println ('Id Kursus: '+ learner1.eduCourse) // Mencetak semua kursus' learner1 'System.out.println (' Courses of Learner 1: ') System.out.println (learner1.eduCourse.course1) System.out.println (pelajar1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Percetakan Butiran Learner2 System.out.println ('Details of Learner 2:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Id Kursus:' + learner2.eduCourse) // Mencetak semua kursus 'learner2' System.out.println ('Kursus of Learner 2: ') System.out.println (learner2.eduCourse.course1) System.out.println (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) // Mengubah kursus3' learner2 'learner2.eduCourse.course3 =' JSP '// Perubahan ini akan ditunjukkan dalam System.out.println' 'learner1' yang asal (' Kursus yang dikemas kini dari Pelajar 2: ') System.out.println (learner1.eduCourse.course1) System.out.println (learner1.eduCourse.course2) System.out.println (learner1.eduCourse.course3)}}

Pengeluaran:

Butiran Pelajar 2: Id: 2811 Nama: Max Kursus Id: EduCourse @ 15db9742 Kursus Pelajar 1: Java Spring Microservices Butiran Pelajar 2: Id: 2811 Nama: Max Kursus Id: EduCourse @ 15db9742 Kursus Pelajar 2: Java Spring Microservices Kursus Kemas kini 2 yang dikemas kini: Java Spring JSP

Pengklonan Dalam di Jawa

Di Jawa, ketika proses pengklonan dilakukan dengan menerapkan antarmuka Cloneable disebut Deep Cloning. Dalam jenis pengklonan ini, salinan tepat dari semua bidang objek asal akan dibuat. Tetapi sekiranya, objek asal mempunyai rujukan ke objek lain sebagai bidang maka salinan objek tersebut juga akan dibuat dengan memanggil kaedah klon (). Ini menjadikan objek yang diklon bebas dari objek asal dan sebarang perubahan yang dibuat pada salah satu objek tidak akan dapat dilihat pada yang lain.

cari panjang javascript larik

Di bawah ini saya telah memberikan contoh yang sama:

pakej edureka class EduCourse mengimplementasikan Cloneable {String course1 String course2 String course3 public EduCourse (String crs1, String crs2, String crs3) {this.course1 = crs1 this.course2 = crs2 this.course3 = crs3} Clone Objek yang dilindungi () melemparkan CloneNotSupportedEx kembali super.clone ()}} kelas EduLearner menerapkan Cloneable {int eduId String learnerName EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName ini.uuCourse Kaedah overriding clone () untuk membuat salinan mendalam objek yang dilindungi objek Klon objek () melemparkan CloneNotSupportedException {EduLearner learner = (EduLearner) super.clone () learner.eduCourse = (EduCourse) eduCourse.clone () return learner}} kelas awam DeepCloneSample {public static void main (String [] args) {EduCourse j2ee = EduCourse baru ('Java', 'Spring', 'Microservices') EduLearner pelajar1 = EduLearner baru (2811, 'Max', j2ee) EduLearner belajar er2 = null cuba {// Membuat klon pelajar1 dan memberikannya kepada pelajar2 pelajar2 = (EduLearner) pelajar1.klone ()} tangkapan (CloneNotSupportedException e) {e.printStackTrace ()} // Mencetak Butiran Sistem Pembelajaran1.out. println ('Details of Learner 2:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Name:' + learner1.learnerName) System.out.println ('Id Kursus: '+ learner1.eduCourse) // Mencetak semua kursus' learner1 'System.out.println (' Courses of Learner 1: ') System.out.println (learner1.eduCourse.course1) System.out.println (pelajar1. eduCourse.course2) System.out.println (learner1.eduCourse.course3) // Percetakan Butiran Learner2 System.out.println ('Details of Learner 2:') System.out.println ('Id:' + learner2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Id Kursus:' + learner2.eduCourse) // Mencetak semua kursus 'learner2' System.out.println ('Kursus Pelajar 2: ') System.out.println (pelajar2.eduCourse.course1) Sistem.out.printl n (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) // Mengubah kursus3 'learner2' learner2.eduCourse.course3 = 'JSP' // Perubahan ini tidak akan dapat dilihat dalam asal ' pelajar1 'System.out.println (' Kursus Pelajar 1: ') System.out.println (pelajar1.eduCourse.course1) System.out.println (pelajar1.eduCourse.course2) System.out.println (pelajar1.eduCourse. course3) // Dikemas kini Kursus pelajar2 System.out.println ('Kursus Pelajar 2:') System.out.println (pelajar2.eduCourse.course1) System.out.println (learner2.eduCourse.course2) System.out. println (pelajar2.eduCourse.course3)}}

Pengeluaran:

Butiran Pelajar 2: Id: 2811 Nama: Max Kursus Id: edureka.EduCourse@15db9742 Kursus Pelajar 1: Java Spring Microservices Butiran Pelajar 2: Id: 2811 Nama: Max Kursus Id: edureka.EduCourse@6d06d69c Kursus Pelajar 2 : Java Spring Microservices Kursus Pelajar 1: Java Spring Microservices Kursus Pelajar 2: Java Spring JSP

Ini membawa kita ke akhir artikel ini mengenai Pengklonan di Jawa. Sekiranya anda ingin mengetahui lebih lanjut mengenai Java, anda boleh merujuk kepada kami .

Sekarang setelah anda memahami apa itu Kloning di Java, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java. Kursus ini dirancang untuk memberi Anda awal dalam pengaturcaraan Java dan melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Tolong sebutkan di bahagian komen artikel 'Kloning di Java' ini dan kami akan menghubungi anda secepat mungkin.