serialVersionUID

来源:互联网 发布:做java程序员 编辑:程序博客网 时间:2024/05/30 05:06

private static final long serialVersionUID = 1L

序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

serialVersionUID 用来表明类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private static final long serialVersionUID这个属性,具体数值自己定义。 
在警告上点左键就可以自动添加。当然也可以去掉警告。设置:Window--> Preferences--> Java,将serializable class without serialVersionUID的设置由warning改为Ignore。然后Eclipse会重新编译程序,那些警告信息也就消失了。

如果你做远程方法调用(RPC)时,比如,服务器端有个类A及对象a,客户端需要无视网络的存在,直接调用对象a。这种情况下,就需要把类A设计为可序列化的,那么它的实例a也就可以实例化了。 

说得简单点,在服务器的命名空间中的对象a,肯定不能直接被客户端的命名空间中的一个对象调用,这不可能,对吧。 
但是如果你把服务器的对象a中的特征属性(不一定是所有属性)变成xml,传送到客户端,然后客户端用你给的特征属性可以模拟的生成一个对象a。 
这个过程就是rpc,而要把对象a变成xml,就是序列化,反之,把xml变成模拟对象a就是反序列化。 

以上是rpc中的序列化。 

实际使用中,把app关闭的时候,内存对象可以通过序列化,可以变成可以保存的xml,这样,以便下次app再开得时候,把以前保存过的xml(或者txt等)反序列化成对象。 

一句话,序列化就是把内存中对象以一种可以保存的形式保存起来。 

需要注意的是: 
序列化可以制定序列化整个类,或者类的某些属性。

原创粉丝点击