Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT中IsSerializable接口的用途是什么(关于RPC机制)_Java_Gwt_Gwt Rpc - Fatal编程技术网

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

Java GWT中IsSerializable接口的用途是什么(关于RPC机制),java,gwt,gwt-rpc,Java,Gwt,Gwt Rpc,GWT中IsSerializable接口的用途是什么(关于RPC机制)。我一直无法找到一个很好的解释来解释为什么它是这样的,以及为什么默认的Java Serializable标记接口不起作用。根据以下内容,Serializable和IsSerializable都起作用: 如果以下所有条件均适用,则用户定义的类是可序列化的: 它可以分配给IsSerializable或Serializable,这是因为它直接实现了这些接口中的一个,或者是因为它派生自一个实现这些接口的超类 所有非最终、非临时实例字段

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

根据以下内容,Serializable和IsSerializable都起作用:

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

  • 它可以分配给IsSerializable或Serializable,这是因为它直接实现了这些接口中的一个,或者是因为它派生自一个实现这些接口的超类
  • 所有非最终、非临时实例字段本身都是可序列化的,并且
  • 从GWT1.5开始,它必须有一个默认(零参数)构造函数(带有任何访问修饰符),或者根本没有构造函数
  • 不过,一个关键的区别是,出于安全原因,所有可序列化的类都必须包含在编译时生成的序列化策略中,而可序列化的类则没有该要求


    如果您只对GWT感兴趣,而不在web应用程序和其他应用程序之间共享模型类,我建议您让模型类/DTO实现
    IsSerializable

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

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

    这里没有外国问题。“非瞬态实例字段”是什么意思?需要序列化策略是否有任何实际缺陷,例如需要额外的处理时间?@chris_l我没有测量到这一点,但直觉上应该更快,因为RPC servlet不必检查序列化策略文件。当然,在讨论绩效时,直觉往往是错误的。