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
DDDasal
2024-11-25 11:02:11517semak imbas

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:
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
Artikel sebelumnya:Mengapa i Bukan Atom di Jawa?Artikel seterusnya:Mengapa i Bukan Atom di Jawa?