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

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 {
}


在您看来,除了我看到的以外,这还有什么其他含义:


覆盖库类的副作用,
Java 9竖锯可能存在的问题(我假设GWT库代码将变得不可更改)->应用程序将永远不会严格遵守Java 9,
一旦可以删除此hack,困难就回到IsSerializable的标准定义(代码具有IsSerializable时假定为Serializable,在回到标准之后将不成立)。


实际上,我想知道是否还有其他我看不到的危险含义。

最佳答案

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

编辑IsSerializable以扩展Serializable应该没有不良影响(除了Java 9之外),但是,如果您根本不使用IsSerializable,则可以完全避免。这将是这里的正确解决方案。

10-07 18:58