【Java IO】Java的序列化机制

Java序列化机制采用的序列化算法:

1.所有保存到磁盘中的对象都有一个序列化编号

2.当程序试图序列化一个对象时,程序首先会检查该对象是否被序列化过,如果没有(在本次虚拟机中),系统才会将该对象转化为字节序列并输出。

3.如果某个对象已经被序列化过,程序直接输出一个序列化编号,不会对该对象序列化。

 

Hadoop没有采用Java 对象序列化机制的原因:

 

自定义序列化

1.属性前加 “transient”,忽略该属性的序列化 ——反序列化恢复对象时无法获得该属性值。

2.在序列化和反序列化中需要特殊处理的类提供如下方法:

private void writeObject(java.io.ObjectOutputStream out)

private void readObject(java.io.ObjectInputStream in)

3.实现Externalizable接口

void writeExternal(java.io.ObjectOutput out)——保存对象状态(基本类型和引用类型的属性值)

void readExternal(java.io.ObjectInput in)——反序列化(恢复基本类型和引用类型属性值)

 

Serializable和Externalizable序列化机制的对比

1.系统自动存储必要信息  vs   程序员决定存储哪些信息

2.java内建支持 vs  实现两个方法

3. 性能较差 vs 性能较高

 

“关于Java 对象序列化您不知道的 5 件事” 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值