java-序列化和反序列化

序列化和反序列化

定义

  • 序列化-Serialize:java对象存储到文件中,将java对象的状态保存下来的过程->对应使用类ObjectOutputStream
  • 反序列化-DeSerialize:将硬盘上的数据恢复到内存当中,恢复成java对象->对应使用类ObjectIutputStream
  • 注意这里指的是状态保存,而不是单纯的文件保存,如游戏状态、浏览状态等

注意

  • 参与序列序列化的对象,必须实现Serializable接口
  • Serializable接口只是一个标志接口,接口中什么代码都没有
    • java虚拟机会识别这个接口并进行相关处理,自动生成一个序列化版本号
  • 序列化版本号的作用
    • java虚拟机首先通过类名区分类
    • 如果类名一样,通过版本号区分类
    • 缺点:一旦代码确定后,代码不能修改,因为修改代码重新编译会生成新的版本号,这时修改后的类和原来的类就不是一个类了,这样不利于类的升级更新
    • 方案是这个类指定一个手动写一个固定版本号,表示本类升级更新始终使用同一个版本号->
      • private static final long serialVersionUID = ..........;
  • transient关键字修饰,表示游离的,不参与序列化
    • 如:private transient String name;
  • 序列化实现
    在这里插入图片描述
  • 反序列化实现
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值