Java Serializable对象

时间:2015-08-31 01:12:07

标签: java serialization

过去几周我开始使用套接字发送数据。我开始使用我的数据发送多个字符串,然后将数据解析为浮点数或我需要它的类型。但随着时间的推移,我注意到我的客户端会开始变慢,因为它的读取和转换多个字符串并使用它们,而我的服务器只是将它们丢弃。所以我开始发送Serializable对象,这些对象很有用,但我对它们有一些疑问。

public class Packet implements Serializable{
    private static final long serialVersionUID = -7896044384334791233L;
    //data here
}

我发送的类看起来像这样但是我要发送的数据。删除串行VersionUID会产生错误。什么是serialVersionUID,如果它在我发送的所有对象中是相同的,为什么这个对我的程序工作很长时间?

1 个答案:

答案 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