2010-06-17 17 views

Trả lời

23

Cả SerializableIsSerializable làm việc, theo GWT serialization docs:

Một lớp người dùng định nghĩa là serializable nếu tất cả những điều sau đây được áp dụng:

  1. Đó là chuyển nhượng để IsSerializable hoặc Serializable, hoặc bởi vì nó trực tiếp triển khai một trong các giao diện này hoặc vì nó xuất phát từ một siêu lớp, chẳng hạn như
  2. Tất cả các trường mẫu không phải là cuối cùng, không phải là tạm thời đều có thể tuần tự hóa và
  3. Kể từ GWT 1.5, nó phải có một hàm tạo mặc định (không đối số) (với bất kỳ công cụ sửa đổi truy cập nào) hoặc không có hàm khởi tạo nào cả.

Một khác biệt quan trọng dù là, vì lý do an ninh, tất cả các lớp học Serializable phải được bao gồm trong một chính sách serialization, được tạo ra tại thời gian biên dịch, trong khi IsSerializable lớp không có yêu cầu đó.

Nếu bạn quan tâm hoàn toàn trong GWT và bạn không ví dụ: chia sẻ các lớp mô hình của bạn giữa ứng dụng web và một ứng dụng khác, tôi khuyên bạn nên có các lớp mô hình/DTO của bạn triển khai IsSerializable.

+0

Noob câu hỏi nước ngoài tại đây. Bạn có ý nghĩa gì bởi "các trường mẫu không thoáng qua"? – Jla

+0

@DrDro: các trường không được đánh dấu bằng công cụ sửa đổi 'transient'. –

+0

Nhu cầu về chính sách tuần tự hóa có bất kỳ hạn chế thực tế nào không, ví dụ: yêu cầu thời gian xử lý bổ sung, ...? –

6

Nếu bạn chia sẻ đối tượng của bạn với các chương trình khác sau đó sử dụng Serializable vì nó là một chức năng thư viện java tiêu chuẩn,

Nhưng nếu bạn chỉ muốn vượt qua nó giữa máy chủ và máy khách trong GWT sau đó sử dụng IsSerializable. Nó giúp bạn chắc chắn rằng bạn không cho phép để bắt đầu chuyển nó đến những nơi nó không nên đi.

Các vấn đề liên quan