Java中序列化的serialVersionUID做用

做用:html

serialVersionUID 是用来在序列号运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,若是相同就认为是一致的,能够进行反序列化,不然就会出现序列化版本不一致的异常。java

 

没定义时默认生成:ui

当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,类型为long的变量时,Java序列化机制会根据编译的class(它经过类名,方法名等诸多因素通过计算而得,理论上是一一映射的关系,也就是惟一的)自动生成一个serialVersionUID做序列化版本比较用,这种状况下,若是class文件(类名,方法明等)没有发生变化(增长空格,换行,增长注释,等等),就算再编译屡次,serialVersionUID也不会变化的..net

 

显式定义的做用:htm

若是咱们不但愿经过编译来强制划分软件版本,即实现序列化接口的实体可以兼容先前版本,未做更改的类,就须要显式地定义一个名为serialVersionUID,类型为long的变量,不修改这个变量值的序列化实体均可以相互进行串行化和反串行化。不一样的成员变量会用默认值代替。blog

 

http://www.cnblogs.com/guanghuiqq/archive/2012/07/18/2597036.html接口

http://blog.csdn.net/z69183787/article/details/46834423io

相关文章
相关标签/搜索