序列化注意事项
当对象被序列化保存到文件中之后,我们可以在其它地方去读取该文件以还原对象,但必须确保该读取程序的CLASSPATH中包含有相应的类例如:Person.class(哪怕在读取Person对象时并没有显示地使用Person类),否则会抛出ClassNotFoundException。
为什么需要ServialVersionUID
应该说为什么要手动声明一个ServialVersionUID。因为只要你做了序列化了,JAVA就会自动给你加上一个SerialVersionUID。
Java强烈建议我们显式的声明一个SerialVersionUID,因为SerialVersionUID默认值的计算是根据类的各个方面得来的(类名、接口名、成员方法及属性等)。
Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)
参考:
http://blog.jobbole.com/31724/
http://www.cnblogs.com/guanghuiqq/archive/2012/07/18/2597036.html