1,定义
将一个对象转换成二进制表示的字节数组,可以通过保存或者转移这些二字节数据来达到持久化的目的。(注意序列化不一定保存类的完整结构信息)
2,序列化要求
对象必须实现java.io.Serializable接口
反序列化要求:必须有原始类作为模板
3,序列化机制:
(1)父类继承Serializable接口则所有子类都可以被序列化
(2)子类继承Serializable接口,父类没有,则父类中属性不会序列化,子类属性可以(这时并不会报错,但数据会丢失)
(3)若序列化的属性是对象,则这个对象必须实现Serializable接口,否则会报错
(4)反序列化时,如果对象的属性修改或者删减,则修改部分属性会丢失,但不报错
(5)反序列化时,若serialViersionUID被修改,则反序列化时会报错。
在多语言环境下,java序列化存储后可能很难用其它语言还原出来,这时就不要序列化存储了,改用一些通用的数据结构比如JSON或者XML结构数据。