GWT中IsSerializable接口的用途是什么(关于RPC机制)

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

根据GWT序列化文档 , SerializableIsSerializable工作:

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

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

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

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

如果你与其他程序共享你的对象,那么使用Serializable,因为它是一个标准的java库函数,

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