过去几周我开始使用套接字发送数据。我开始使用我的数据发送多个字符串,然后将数据解析为浮点数或我需要它的类型。但随着时间的推移,我注意到我的客户端会开始变慢,因为它的读取和转换多个字符串并使用它们,而我的服务器只是将它们丢弃。所以我开始发送Serializable对象,这些对象很有用,但我对它们有一些疑问。
public class Packet implements Serializable{
private static final long serialVersionUID = -7896044384334791233L;
//data here
}
我发送的类看起来像这样但是我要发送的数据。删除串行VersionUID会产生错误。什么是serialVersionUID,如果它在我发送的所有对象中是相同的,为什么这个对我的程序工作很长时间?
答案 0 :(得分:0)
这是一种说明数据格式的方式。如果您从中删除字段 您的类,您应该更改serialVersionUuid或您的对象的使用者可能会错误地读取它。
看看这个答案。
Why generate long serialVersionUID instead of a simple 1L?
请参阅此链接以查看不兼容的更改,例如删除字段。 http://docs.oracle.com/javase/6/docs/platform/serialization/spec/version.html
此外,您可以覆盖Java用于使用writeObject和readObject序列化对象的默认方法。如果您知道压缩对象数据(例如)会导致组件之间的网络流量减少,这可能很有用。或者也许有一些自定义方式可以发送比默认Java方式更优化的数据。
看到这个答案。 Java Custom Serialization