Rumah > Java > javaTutorial > Mengapakah Kaedah `clone()` Java Dilindungi dan Bukan Sebahagian daripada Antara Muka `Boleh Diklon`?

Mengapakah Kaedah `clone()` Java Dilindungi dan Bukan Sebahagian daripada Antara Muka `Boleh Diklon`?

DDD
Lepaskan: 2024-11-25 11:02:11
asal
516 orang telah melayarinya

Why is Java’s `clone()` Method Protected and Not Part of the `Cloneable` Interface?

Kaedah Klon() Dilindungi dalam Java: Keputusan Membingungkan

Klon() Java ialah kaedah yang unik, dilindungi dalam java.lang. Objek. Mengapakah keputusan yang membingungkan ini?

Ketidakupayaan untuk Memanfaatkan Antara Muka Boleh Diklon

Tidak seperti rangka kerja lain di mana kelas boleh disalin melaksanakan antara muka boleh diklon, klon Java() tidak diisytiharkan dalam Boleh Diklon. Akibatnya, menyemak kebolehklonan menggunakan antara muka adalah mustahil. Kod seperti "if(a instanceof Cloneable)" tidak boleh menentukan sama ada 'a' menyokong pengklonan.

Ketergantungan Refleksi

Untuk memintas pengehadan ini, refleksi boleh digunakan. Walau bagaimanapun, pendekatan ini memperkenalkan kerumitan yang tidak perlu dan bergantung pada pengetahuan pelaksanaan kelas konkrit. Ia juga bergantung pada protokol yang ketat, selalunya tidak didokumenkan dan tidak boleh dikuatkuasakan.

Reka bentuk Menyesal

Josh Bloch, pengarang Effective Java, melabelkan reka bentuk Cloneable sebagai "satu kesilapan." Ia gagal mengiklankan sokongan pengklonan dengan berkesan dan mengenakan protokol yang menyusahkan. Sebaliknya, dia mencadangkan untuk melaksanakan Boleh Diklon di peringkat kelas, memastikan pematuhan dengan protokol.

Atas ialah kandungan terperinci Mengapakah Kaedah `clone()` Java Dilindungi dan Bukan Sebahagian daripada Antara Muka `Boleh Diklon`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan