Apa itu Kloning di Java dan Jenisnya?



Artikel tentang Kloning di Java ini akan memberi Anda wawasan mendetail tentang proses Kloning dan berbagai jenis kloning yang didukung oleh Java.

Saat memprogram, sering kali kita menemukan skenario di mana kita perlu menggunakan kembali sepotong kode lengkap. Menulis ulang kode membuat program menjadi besar, sekaligus menurunkan efisiensi program. Jadi, Java memberi kita fitur luar biasa yang menyelamatkan dari tugas yang memberatkan ini. Ini dikenal sebagai Kloning di Jawa dan melalui media artikel ini, saya akan memberi Anda wawasan lengkap tentangnya.

Di bawah ini adalah topik yang akan saya bahas dalam artikel ini:





Kloning di Jawa

Kloning objek di Java adalah proses membuat salinan persis dari objek aslinya. Dengan kata lain, ini adalah cara membuat objek baru dengan menyalin semua data dan atribut dari objek asli. Ini hanya mungkin dengan menerapkan metode clone () dari java.lang.Object kelas. Metode klon membuat salinan persis dari sebuah objek yang telah diambildipanggil dalam urutan tugas bidang-demi-bidang dan akan mengembalikan referensi objek baru . Satu hal yang harus Anda ingat, di Java, objek yang mengimplementasikan antarmuka clone yang merupakan antarmuka marker diizinkan untuk menggunakan clone ().

python __init__ diri

Sekarang setelah Anda mengetahui apa itu kloning di Java, mari kita lihat berbagai keuntungan menggunakan fitur ini.



Keuntungan Kloning di Java

Di bawah ini saya telah membuat daftar beberapa fitur yang paling menarik dalam menggunakan kloning di Java.

  • Membantu mengurangi baris kode.
  • Cara penyalinan yang paling efektif dan efisienbenda.
  • Selain itu, clone () dianggap sebagai metode tercepat untuk menyalin larik.

Catatan: Meskipun menggunakan kloning dapat menyebabkan beberapa masalah desain, tetapi jika Anda menggunakannya dengan cara strategis yang tepat, hal itu dapat menguntungkan Anda.

Jenis Kloning di Java

Kloning di Java dapat dikelompokkanmenjadi dua kategori:



  1. Kloning Dangkal
  2. Kloning Mendalam

Mari kita pahami masing-masing satu per satu.

Kloning Dangkal

Di Java, saat proses kloning dilakukan dengan memanggil metode clone (), itu disebut Shallow Cloning. Ini adalah proses kloning default di Java di mana salinan dangkal dari objek asli akan dibuat dengan bidang yang sama persis. Jika objek asli memiliki referensi ke beberapa objek lain sebagai bidang, maka hanya referensi objek tersebut yang akan digandakan, bukan pembuatan objek baru. Dengan kata lain, jika Anda mengubah nilai objek kloning maka itu akan tercermin dalam aslinya juga. Jadi, kloning dangkal bergantung pada objek aslinya.

salinan dangkal - Kloning di Jawa - EdurekaDi bawah ini saya telah memberikan contoh yang sama:

paket 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}} class EduLearner mengimplementasikan Cloneable {int eduId String learnerName EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = learnerName this.eduCourse = eduCourse} // Versi default dari cloneNeption () metode dilindungi Object cloneExcot () melempar super CloneNeption .clone ()}} kelas publik ShallowCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner learner1 = new EduLearner (2811, 'Max' , j2ee) EduLearner pelajar2 = null coba {// Membuat tiruan pelajar1 dan menetapkannya ke pelajar2 pelajar2 = (EduLearner) pelajar1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Mencetak Detail Pelajar1 System.out.p rintln ('Rincian Peserta 2:') System.out.println ('Id:' + learner1.eduId) System.out.println ('Nama:' + learner1.learnerName) System.out.println ('ID Kursus: '+ pelajar1.eduCourse) // Mencetak semua kursus' 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) // Mencetak Detail Pelajar2 System.out.println ('Detail Pelajar 2:') System.out.println ('Id:' + pelajar2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Course Id:' + learner2.eduCourse) // Mencetak semua kursus 'pelajar2' System.out.println ('Kursus dari Pelajar 2: ') System.out.println (pelajar2.eduCourse.course1) System.out.println (pelajar2.eduCourse.course2) System.out.println (pelajar2.eduCourse.course3) // Mengubah kursus3' pelajar2 'learner2.eduCourse.course3 =' JSP '// Perubahan ini akan tercermin dalam' pelajar1 'System.out.println (' Kursus yang Diperbarui dari Pelajar 2: ') System.out.println (pelajar1.eduCourse.course1) System.out.println (pelajar1.eduCourse.course2) System.out.println (pelajar1.eduCourse.course3)}}

Keluaran:

Rincian Peserta 2: Id: 2811 Nama: Id Kursus Maks: EduCourse @ 15db9742 Kursus Peserta 1: Java Spring Microservices Rincian Peserta 2: Id: 2811 Nama: Id Kursus Maks: EduCourse @ 15db9742 Kursus Peserta 2: Java Spring Microservices Mata Kuliah yang Diperbarui untuk Peserta 2: Java Spring JSP

Deep Cloning di Java

Di Java, saat proses kloning dilakukan dengan mengimplementasikan antarmuka Cloneable, hal itu disebut Deep Cloning. Dalam jenis kloning ini, salinan persis semua bidang objek asli akan dibuat. Namun dalam kasus, objek asli memiliki referensi ke objek lain sebagai bidang, maka salinan objek tersebut juga akan dibuat dengan memanggil metode clone (). Hal ini membuat objek kloning tidak bergantung pada objek aslinya dan perubahan apa pun yang dibuat pada objek mana pun tidak akan tercermin di objek lainnya.

perbedaan antara overriding dan overloading

Di bawah ini saya telah memberikan contoh yang sama:

paket 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} objek yang dilindungi clone () melempar CloneNotSupportedException { return super.clone ()}} kelas EduLearner mengimplementasikan Cloneable {int eduId String learnerName EduCourse eduCourse public EduLearner (int eduId, String learnerName, EduCourse eduCourse) {this.eduId = eduId this.learnerName = eduCourse} //ed learnerName} Mengganti metode clone () untuk membuat salinan dalam objek yang dilindungi Object clone () akan melontarkan CloneNotSupportedException {EduLearner learner = (EduLearner) super.clone () learner.eduCourse = (EduCourse) eduCourse.clone () return pelajar}} kelas publik DeepCloneSample {public static void main (String [] args) {EduCourse j2ee = new EduCourse ('Java', 'Spring', 'Microservices') EduLearner learner1 = new EduLearner (2811, 'Max', j2ee) EduLearner learn er2 = null try {// Membuat tiruan pelajar1 dan menetapkannya ke pelajar2 pelajar2 = (EduLearner) pelajar1.clone ()} catch (CloneNotSupportedException e) {e.printStackTrace ()} // Mencetak Detail Learner1 System.out. println ('Rincian Peserta 2:') System.out.println ('Id:' + pelajar1.eduId) System.out.println ('Nama:' + pelajar1.learnerName) System.out.println ('ID Kursus: '+ pelajar1.eduCourse) // Mencetak semua kursus' 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) // Mencetak Detail Pelajar2 System.out.println ('Detail Pelajar 2:') System.out.println ('Id:' + pelajar2.eduId ) System.out.println ('Name:' + learner2.learnerName) System.out.println ('Course Id:' + learner2.eduCourse) // Mencetak semua kursus 'pelajar2' System.out.println ('Kursus Pelajar 2: ') System.out.println (pelajar2.eduCourse.course1) System.out.printl n (learner2.eduCourse.course2) System.out.println (learner2.eduCourse.course3) // Mengubah course3 dari 'learner2' learner2.eduCourse.course3 = 'JSP' // Perubahan ini tidak akan tercermin dalam aslinya ' 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) // Kursus yang Diperbarui dari pelajar2 System.out.println ('Kursus Pelajar 2:') System.out.println (pelajar2.eduCourse.course1) System.out.println (pelajar2.eduCourse.course2) System.out. println (pelajar2.eduCourse.course3)}}

Keluaran:

Rincian Peserta 2: Id: 2811 Nama: Id Kursus Maks: edureka.EduCourse@15db9742 Mata Kuliah Peserta 1: Java Spring Microservices Rincian Peserta 2: Id: 2811 Nama: Id Kursus Maks: edureka.EduCourse@6d06d69c Mata Kuliah Peserta 2 : Java Spring Microservices Kursus untuk Peserta 1: Java Spring Microservices Kursus untuk Peserta 2: Java Spring JSP

Pembahasan ini mengakhiri artikel tentang Kloning di Java ini. Jika Anda ingin tahu lebih banyak tentang Java, Anda dapat merujuk ke kami .

algoritma pengurutan dapat digunakan untuk mengatur satu set ________ dalam urutan ________.

Sekarang Anda telah memahami apa itu Kloning di Java, lihat file oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus pelatihan dan sertifikasi Java J2EE dan SOA Edureka dirancang untuk siswa dan profesional yang ingin menjadi Pengembang Java. Kursus ini dirancang untuk memberi Anda permulaan dalam pemrograman Java dan melatih Anda untuk konsep Java inti dan lanjutan bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar artikel 'Kloning di Java' ini dan kami akan menghubungi Anda kembali secepatnya.