序列化与反序列化

序列化与反序列化

java对象序列化:将对象转换成字节序列,二进制流;

序列化(Serialize):将JAVA对象写入IO流;
反序列化(Deserialize):从IO恢复该Java;

序列化机制:

  • 1、所有保存到磁盘中的对象都有一个序列化编号;
  • 2、序列化对象时,先检查该对象是否被序列化过,只有该对象从未在本次虚拟机中被序列化过,系统才将该对象转换为字节序列化并输出;
  • 3、如果已经被序列化过,程序只是输出一个序列化编号,不是重新序列化;

自定义序列:

transient
序列化时,不需要对某个成员变量序列化保存,使用transient关键字;

自定义控制各实例:

在实体类中提供相关的方法进行控制,类似与getter与setter方法;

对象替换:

在序列化对象之前先调用相关方法,该方法具有不同的访问权限,在读取或写入时替换相关的对象;

Externalizable:

该接口也可用于序列化,要去实现存储与恢复对象数据时,需要实现相关方法:
readExternal:实现反序列化,调用DataInput恢复;
writeExternal:实现序列化;
实现该接口方法为null时,性能比Serializable稍好一点;

版本:

serialVersionUID:序列化id,如果一个类升级后,serialVersionUID不变,序列化会当作同一个版本;

序列化的好处就是可以跨平台传输,使用java进行序列化时,可以使用其他语言进行反序列化,例如.net、python等

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值