序列化与反序列化
序列化(Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。 在序列化期间,对象将其当前状态写入到临时或持久性存储区。 以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。
- 序列化: 将数据结构或对象转换成二进制串的过程。
- 反序列化:将在序列化过程中所生成的二进制流转换成数据结构或者对象的过程。
递归序列化
当对某个对象进行序列化时,系统会自动把该对象的所有实例变量依次进行序列化,如果某个实例变量引用到另一个对象,则被引用的对象也会被序列化;如果被引用的对象的实例变量也引用了其它对象,则被引用的对象也会被序列化,这种情况被称为递归序列化;
序列化方案
- protobuf
- java内置的序列化方式
- hessian
- JSON
- XML
- Kryo
protobuf
性能优异,支持跨平台,但侵入性强需要定义Proto文件,无法直接使用JAVA等面向对象编程语言的对象
序列化接口
- Serializable
- Externalizable
知识点
反序列化机制在恢复Java对象时无须调用构造器初始化Java对象;