java基础——序列化和反序列化

序列化与反序列化

1、定义

把Java对象转换为字节序列的过程称为对象的序列化
把字节序列恢复为Java对象的过程称为对象的反序列化

2、实现方式

所有实现序列化的类都需要实现Serializable接口,是一种标记接口,没有任何方法。
当序列化的时候,需要用到ObjectOutputStream里的writeObject();
当反序列化时,需要用到ObjectInputStream里的readObject()方法。

3、特点:

1)序列化时,只对对象的状态进行保存,不管对象的方法
2)当一个父类实现序列化时,子类自动序列化,不需要显式实现Serializable接口
3)当一个对象的实例变量引用了其他对象时,序列化该对象时,也把引用对象进行序列化
4)对象中被static或者transient修饰的变量,在序列化时其变量值是不被保存的

4、好处

1)实现了数据的持久化,通过序列化可以报数据永久地保存到硬盘上(存放在文件里)
2)利用序列化实现远程通信(在网络上传送对象的字节序列)

ArrayList和LinkedList能否序列化?

都可以序列化。
ArrayList的元素是transient的,仅仅序列化已经保存的数据。自定义writeObject和readObject方法,在writeObject方法内完成数组元素的自定义序列化,在readObject方法内完成数组元素的自定义反序列化动作。

猜你喜欢

转载自blog.csdn.net/u010843421/article/details/81269070