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!