对象的序列化和反序列化

序列化:把对象转换成字节序列的过程叫做序列化
反序列化:把字节序列转换为对象的过程叫做反序列化

Java序列化对象的方式:
1:Java序列化的默认API
  通过java.io.ObjectOutputStream对象输出流的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。
  通过java.io.ObjectInputStream对象输入流的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回,返回时通过强制类型转换赋值给具体的类对象引用。
2:让对象可以被序列化的三种方式
   1)默认序列化:定义类时实现Serializable接口即可,这个Serializable接口是一个空接口,没有需要实现的方法。作用是标记该类的对象可以被序列化,启用其序列化功能。通过调用ObjectOutputStream和ObjectInputStream的方法来对该对象进行序列化和反序列化。

    2)类自定义序列化方式一:定义类时,实现Serializable接口,并在类中定义:    

private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
这两个方法,在方法中通过对象输入流参数、对象输出流参数进行自定义的内容输出。这样通过对象输出流和对象输入流的输入输出方法序列化和反序列化对象时
会自动调用类中定义的writeObject和readObject方法而不是默认的序列化和反序列化方法。
3)类自定义序列化方式二:实现Externalnalizable接口(继承自 Serializable接口),并且在类中实现readExternal(ObjectInput in)和writeExternal(ObjectOutput out)方法,在方法中定义类对象自定义
的序列化和反序列化操作。这样通过对象输出流和对象输入流的输入输出方法序列化和反序列化对象时会自动调用类中定义的readExternal

实现序列化,满足的条件
1.实现接口:serializable标识接口

2.对象所在的类提供常量:序列版本号

3.要求对象的属性也必须是可序列化的,(基本数据类型String)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值