序列化和反序列化注意事项
- 要序列化的类必须要实现Serializable接口
- 序列化类中对象属性也要实现Serializable接口
- serialVersionUID:序列化版本号ID,用于保证序列化的类和反序列化的类是同一个类
如上图所示:添加序列化版本号ID以后发现反序列化报异常,因为之前进行序列化和反序列化时并没有添加版本号,反序列化时会自动生成一个版本号ID,此时再自己添加一个版本号ID,后续自己添加的ID肯定和自动生成的ID是不同的,系统就认为序列化的类和要进行反序列化的类不是一个类,自然报异常
把自动生成的ID赋给自定ID即可成功反序列化
-
使用transient修饰属性,这个属性就不会被序列化了
如上图所示,年龄属性没有被序列化,反序列化不出来 -
静态属性是不能被序列化的
-
一次性序列化多个对象:把多个对象加入到一个集合当中,直接序列化这个集合即可(反序列化时记得要强转类型)