【发布时间】:2011-03-05 03:43:16
【问题描述】:
GWT 中 IsSerializable 接口的用途是什么(关于 RPC 机制)。我从来没有找到一个很好的解释来解释为什么会这样以及为什么默认的 Java Serializable 标记接口不起作用。
【问题讨论】:
GWT 中 IsSerializable 接口的用途是什么(关于 RPC 机制)。我从来没有找到一个很好的解释来解释为什么会这样以及为什么默认的 Java Serializable 标记接口不起作用。
【问题讨论】:
Serializable 和 IsSerializable 都可以工作,根据 GWT serialization docs:
如果满足以下所有条件,则用户定义的类是可序列化的:
- 它可以分配给 IsSerializable 或 Serializable,要么是因为它直接实现了这些接口之一,要么是因为它派生自具有此功能的超类
- 所有非最终的、非瞬态的实例字段本身都是可序列化的,并且
- 从 GWT 1.5 开始,它必须有一个默认(零参数)构造函数(带有任何访问修饰符)或根本没有构造函数。
一个关键的区别是,出于安全原因,所有Serializable 类都必须包含在一个序列化策略中,该策略在编译时生成,而IsSerializable 类没有这个要求。
如果您的兴趣纯粹是 GWT,并且您不例如在 Web 应用程序和另一个应用程序之间共享您的模型类,我建议您让您的模型类/DTO 实现 IsSerializable。
【讨论】:
如果您与其他程序共享您的对象,请使用 Serializable 因为它是一个标准的java库函数,
但如果您只想在 GWT 中的服务器和客户端之间传递它,那么请使用 IsSerializable。 它可以帮助您确保无法开始将其传递到不应去的地方。
【讨论】: