[英]Do a class's methods have to be the same for serialization?
我觉得这很愚蠢,但是要使通过ObjectInput / Output Streams在套接字上进行序列化工作,接收程序中的类是否必须完全相同,如果这些类不完全相同,则会产生错误,或者他们可以有几种不同的方法/等吗? 如果这太简单了,请在这里提出一个问题,对不起。
默认情况下,java编译器将生成一个private static long serialVersionUID
并且此ID的两端必须匹配。 如果方法不同,则生成的ID将不匹配。
解决此问题的简单方法是对ID进行硬编码。
private static final long serialVersionUID = -1;
并且将始终匹配。
下一步是字段也应该匹配。 但是,如果您编写自己的readObject()
方法,则可以更改这些readObject()
并且在某些类中可以这样做,因为随着时间的流逝,字段剃须发生了变化。
流中的项目顺序如下:
如果使用默认(反)序列化,则可以进行多个兼容的更改而不会破坏它,请参见“可序列化对象的版本控制” ,在“ 5.6.1不兼容的更改”中,以下内容作为不兼容的更改列出。 具体来说,添加方法不会破坏序列化。
也就是说,已知默认序列化在非常有限的用例中是适当的,并且最好使用其他方法,例如JSON
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.