前言
Serializable接口是Java中用于启用对象序列化功能的接口。简单记录于此,方便自己查阅。
正文
Serializable接口是一个空接口,没有任何方法,其主要作用是作为一个标记,告诉Java虚拟机该类的对象是可以被序列化的。
序列化和反序列化
序列化是将对象状态保存为字节流的过程,序列化通常涉及创建一个ObjectOutputStream,并通过该输出流写入对象。
反序列化则是将字节流恢复为对象状态的过程,反序列化则通过ObjectInputStream读取字节流并恢复对象。
序列化步骤
- 创建OutputStream对象,例如FileOutputStream。
- 将OutputStream封装到ObjectOutputStream对象中。
- 使用writeObject()方法将对象写入输出流。
- 关闭资源,包括ObjectOutputStream和底层的OutputStream。
反序列化步骤
- 创建InputStream对象,例如FileInputStream。
- 将InputStream封装到ObjectInputStream对象中。
- 使用readObject()方法从输入流中读取并恢复对象。
- 关闭资源,包括ObjectInputStream和底层的InputStream。
作用
可跨平台 : 序列化允许Java对象在不同的平台和Java虚拟机之间传输,只要序列化和反序列化的过程遵循相同的协议
兼容性强 : Java的序列化机制保证了对象的兼容性,即使类的实现发生变化,只要类的序列化版本号(
serialVersionUID
)保持不变,旧的序列化对象仍然可以在新的类实现上进行反序列化
缺点
性能 :一般,主要涉及大量IO操作,存在影响程序性能。
安全性 :序列化可能会带来安全风险,因为恶意的序列化数据可以被用来执行攻击。
demo
下面是自己写的demo,用于简单的使用。
比较粗糙哈,部分代码
参考文章
© 版权声明