2011-09-21 27 views
7

Tôi đang chuyển đổi mã C# thành Java. Có rất nhiều địa điểm khác nhau dựa trên .Net MemberwiseClone trong mã tôi đang chuyển đổi..Net MemberwiseClone vs Java Clone

Dường như cả hai đều tạo bản sao nông. Vì vậy, nó có thể chỉ đơn giản là thay thế các cuộc gọi với Java clone()? Tôi muốn đảm bảo rằng không có bất kỳ sự khác biệt nhỏ nào có thể gây khó khăn để sửa lỗi.

Trả lời

6

Giả sử các cuộc gọi clone() trong Java được chỉ gọi thi Object.clone(), sau đó tôi tin rằng họ có hành vi tương tự:

  • Một đối tượng của lớp cùng được tạo ra
  • Các lĩnh vực được sao chép (lên và xuống hệ thống phân cấp thừa kế)
  • Tất cả các bản sao được thực hiện theo cách nông
  • Không có mã do người dùng chỉ định nào được thực thi (nhà thầu, v.v ...)