在当前的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
,则可以完全避免。这将是这里的正确解决方案。