序列化与反序列化

什么是序列化与反序列化

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

序列化的实现

在Java中,如果一个对象要想实现序列化,必须要实现下面两个接口之一:

Serializable 接口
Externalizable 接口

序列化的作用

最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。序列化后的字节流保存了Java对象的状态以及相关的描述信息。序列化机制的核心作用就是对象状态的保存与重建。

序列化主要用途

把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)
在网络上传送对象的字节序列。(网络传输对象)因为可以直接将对象保存到本地;

什么是持久化对象

把内存中的对象存储在某种介质上(除内存外,包括硬盘或者网络存储传输等),当然持久化的完整操作并不只是为了把对象数据以字节码或字节流的形式存储在介质上,它还要包括对持久化的对象读取与验证。
持久化的前提就是存本地的对象必须序列化。

public class SerializableTest {
    public static void main(String[] args) throws IOException {
        Person pn= new Person("张三",26);
        FileOutputStream fos=new FileOutputStream("person.txt");
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        oos.writeObject(pn);
        oos.close();
        fos.close();
        System.out.println(pn.toString());  
    }
}

什么是网络传输对象

我们通常用的Socket传输,就是将对象先转成序列化在传输的。
就像我们常用的RPC框架,客户端想去调用服务端的方法,服务端暴露出的方法就是先序列化之后在通过TCP传输到客户端,在通过反序列化转码来进行传输的,这样客户端就可以使用服务端发布的方法了。
总之,一个类要想在服务之间进行传输或者保存到本地,都是需要先序列化之后才能进行操作的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值