Tôi đã xem qua một số mã lớp mà thực hiện Clonable
, tài liệu khẳng định:điểm trong việc cho phép lớp học của tôi thực hiện Cloneable là gì?
Một lớp cài đặt giao diện Cloneable để chỉ cho phương pháp Object.clone() rằng đó là pháp lý cho phương pháp đó để thực hiện một field- sao chép trường cho các cá thể của lớp đó. Gọi phương thức sao chép của đối tượng trên một cá thể không thực hiện các kết quả giao diện Cloneable trong ngoại lệ CloneNotSupportedException bị ném. Theo quy ước, các lớp thực hiện giao diện này sẽ ghi đè Object.clone (được bảo vệ) bằng phương thức công khai. Xem Object.clone() để biết chi tiết về cách ghi đè phương thức này. Lưu ý rằng giao diện này không chứa phương thức sao chép. Do đó, không thể sao chép một đối tượng chỉ bằng thực tế là nó thực hiện giao diện này. Ngay cả khi phương thức sao chép được gọi một cách phản xạ, thì không có gì đảm bảo rằng nó sẽ thành công.
Tôi không thể hiểu được điểm khi triển khai lớp này, như đã nói trong tài liệu phương pháp .clone
không được triển khai trong giao diện và tôi phải triển khai. Vậy tại sao lại sử dụng lớp này? Tại sao tôi không chỉ viết một phương thức copyClass
trong lớp của mình để sao chép đối tượng mà không cần thực hiện lớp này?
Xin cảm ơn trước.
Bạn có lớp học của bạn thực hiện Cloneable để bạn có thể sử dụng các cơ chế nhân bản tích hợp, vì vậy các lớp khác có thể sao chép của bạn mà không cần phải biết đó là phương thức sao chép duy nhất. Vâng, đó là một cách lạ để quản lý nó, nhưng một phần nó phải làm với khả năng tương thích ngược. –