Có hình phạt nào để thêmHình phạt để thực thi Serializable trong Java?
implements Serializable
vào một lớp Java? Tác động đến kích thước của đối tượng hoặc hiệu suất được tạo ra?
Có hình phạt nào để thêmHình phạt để thực thi Serializable trong Java?
implements Serializable
vào một lớp Java? Tác động đến kích thước của đối tượng hoặc hiệu suất được tạo ra?
Chi phí gần bằng không, không đáng lo ngại.
Một số thông tin chi tiết:
Trừ khi bạn/người khác thực sự tuần tự hóa/deserializes, sẽ không có bất kỳ tác động nào. Serializable
chỉ là một giao diện điểm đánh dấu.
Nó có thể sẽ chỉ tăng kích thước của bytecode được tạo ra bởi một vài byte.
Cảm ơn, cũng nghĩ vậy. – AChoice
Không có tác động về hiệu suất trừ khi bạn thực hiện tuần tự hóa/deserialization nhưng có sự cân bằng thương mại về thiết kế api.
Từ Effective java bởi Joshua Bloch
- Một chi phí lớn thực hiện Serializable là nó làm giảm sự linh hoạt để thay đổi thực hiện của một lớp một khi nó đã được phát hành
- Một chi phí thứ hai thực hiện Serializable là rằng nó làm tăng khả năng lỗi và lỗ hổng bảo mật
- Chi phí thứ ba của việc triển khai Serializable là nó tăng gánh nặng thử nghiệm liên quan đến việc phát hành phiên bản mới của một lớp học
Upto mức độ này áp dụng cho bạn tùy thuộc vào hệ thống của bạn.
Không có tác động hiệu suất ngay cả khi bạn * làm * thực hiện tuần tự hóa/deserialization, bởi vì nếu bạn không thực hiện 'Serializable' bạn không thể làm điều đó ở tất cả vì vậy không có gì để so sánh nó với. – EJP
Cảm ơn Joshua-trích dẫn. Tôi đồng ý. – AChoice
Tôi thực sự sẽ không triển khai Serializable mà không đọc cuốn sách Java hiệu quả đầu tiên. –
Serializable
chỉ là giao diện "điểm đánh dấu". Nó không yêu cầu bạn phải thực hiện bất kỳ phương pháp nào.
Điều duy nhất là bạn nên có static final long serialVersionUID
để giúp API tuần tự hóa. Điều đó có giá trị một giá trị long
duy nhất cho mỗi lớp được tuần tự hóa.
Bạn có thể muốn xem this article about Java Serialization API. Nó mô tả hầu hết các caveat của serialization/deserialization cụ thể.
Bạn nên luôn xem xét phí bảo trì trước.Chi phí của một ứng dụng được triển khai trên trực tiếp của nó có thể là nhiều lần chi phí phát triển nó.
Trong trường hợp này, chi phí tạo lớp Serializable, nhưng không thực sự được sử dụng cho Tuần tự hóa có thể gây ra lỗi hoặc nhầm lẫn xa hơn so với chi phí hiệu suất. ví dụ. nói rằng phải mất 1 phút hoặc thời gian của ai đó để xác định Serializable là không cần thiết, điều này có thể chi phí nhiều hơn so với thời gian khởi động thêm vài nano giây mà ứng dụng phải gánh chịu.
Nếu bạn thực sự cần nó để được Serializable, bạn không thể so sánh nó với phiên bản không Serializable vì chỉ có trường hợp đầu tiên thực sự sẽ làm công việc cần thiết.
http://www.javalobby.org/java/forums/t88856.html –
Liên kết đó là 5 tuổi. – adarshr
Khái niệm? –