序列化和反序列化的方法及底层实现

本文介绍了序列化和反序列化的概念及实现方法。要使一个对象能够被序列化,该对象所属的类需实现Serializable或Externalizable接口。通过ObjectOutputStream和ObjectInputStream可以对实现了Serializable接口的对象进行序列化和反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人学习摘抄与反思总结
via:徐刘根 https://blog.youkuaiyun.com/xlgen157387/article/details/79840134

序列化和反序列化的方法

实现了Serializable 或 Externalizable 接口才能被序列化,否则将会抛出异常。

  1. 若一个实现了Serializable接口的类对象需要被序列化,则可以通过ObjectOutputStream、ObjectInputStream采用默认的序列化方式,对对象的非transient的实例变量进行序列化和反序列化;若其定义了 readObject(ObjectInputStream in) 和 writeObject(ObjectOutputSteam out),则ObjectOutputStream、ObjectInputStream将分别调用相应方法直接进行序列化和反序列化。
  2. 若一个类实现的是Externalizable接口,则必须实现 readExternal(ObjectInput in) 和 writeExternal(ObjectOutput out) 方法,ObjectOutputStream、ObjectInputStream将通过分别调用该方法的方式分别实现序列化和反序列化。

序列化:

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\object.out"));
oos.writeObject(new User("xuliugen", "123456", "male"));

反序列化:

ObjectInputStream ois= new ObjectInputStream(new FileInputStream("object.out"));
User user = (User) ois.readObject();

JDK类库中用于序列化和反序列化的API:

java.io.ObjectOutputStream 对象输出流。通过writeObject(Object obj)方法对指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中;

java.io.ObjectInputStream 对象输入流。通过readObject()方法从源输入流中读取字节序列,再把它们反序列化成为一个对象,并返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值