22

GWT 中 IsSerializable 接口的用途是什么(关于 RPC 机制)。我从来没有找到一个很好的解释来解释它为什么会这样以及为什么默认的 Java Serializable 标记接口不起作用。

4

2 回答 2

25

根据GWT 序列化文档,两者都Serializable可以工作:IsSerializable

如果满足以下所有条件,则用户定义的类是可序列化的:

  1. 它可以分配给 IsSerializable 或 Serializable,因为它直接实现了这些接口之一,或者因为它派生自一个超类
  2. 所有非最终的、非瞬态的实例字段本身都是可序列化的,并且
  3. 从 GWT 1.5 开始,它必须有一个默认(零参数)构造函数(带有任何访问修饰符)或根本没有构造函数。

但是一个关键的区别是,出于安全原因,所有Serializable类都必须包含在序列化策略中,该策略在编译时生成,而IsSerializable类没有这个要求。

如果您的兴趣纯粹是在GWT,并且您没有在 Web 应用程序和另一个应用程序之间共享您的模型类,我建议您让您的模型类/DTO 实现IsSerializable

于 2010-06-17T20:48:05.717 回答
6

如果您与其他程序共享您的对象,请使用Serializable ,因为它是标准的 java 库函数,

但是,如果您只想在 GWT 中的服务器和客户端之间传递它,请使用IsSerializable。它可以帮助您确保无法开始将其传递到不应该去的地方。

于 2010-06-17T21:01:06.907 回答