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