GWT:使用"接口替换IsSerializable的缺点IsSerializable扩展了Serializable"

时间:2018-02-21 14:46:01

标签: java serialization gwt

在当前的GWT项目中,我发现了一个奇怪的提交:标准类 com.google.gwt.user.client.rpc.IsSerializable 被替换为以下代码作为hack只是为了修复服务器端的一些序列化问题:

package com.google.gwt.user.client.rpc;

import java.io.Serializable;

public interface IsSerializable extends Serializable {
}

IsSerializable的标准定义是( gwt-user-2.8.1.jar ):

public interface IsSerializable {
}

在您看来,除了我看到的内容之外,还有其他含义

  1. 覆盖库类的副作用,
  2. Java 9 jigsaw的可能问题(我假设GWT库代码将变得不可更改) - >该应用程序永远不会严格遵守Java 9,
  3. 一旦可以删除这个hack,就会回到IsSerializable的标准定义上的困难(代码假定在使用IsSerializable时可以使用Serializable,这在返回标准后就不会这样了。)
  4. 事实上,我想知道,如果有其他危险的含义,我看不到。

2 个答案:

答案 0 :(得分:2)

IsSerializable类在GWT-RPC中为java.io.Serializable提供支持。您可以完全避免IsSerializable,并且只在任何与GWT-RPC兼容的对象中使用Serializable

编辑IsSerializable以扩展Serializable应该没有任何不良影响(除了Java 9点),但如果您根本不使用IsSerializable,可能完全可以避免。那将是适当的解决方案。

答案 1 :(得分:0)

我认为这是一个"技巧"对于GWT-rpc,为了限制要导出以进行序列化的类的数量。 希望更接近核心的人会进入这个对话并提供更多见解。

TL; DR:如果你不使用GWT-rpc(你不应该)担心它(我不会)。