java序列化

  1. serialVersionUID
该字段如果如果自己不设定,编译器会根据类的信息自动帮你设定
ObjectInputStream.readObject()时会检验当前序列化文件中的serialVersionUID与本环境中序列化文件中对应类serialVersionUID是否一致
  1. Serializable接口
如果父类没有实现该接口,那么父类中的字段默认为null或0
  1. transient关键字
默认的序列化方法不会序列化该关键字,除非在自定义的序列化流程中手动指定。
只有对象的变量会被序列化。
  1. 如何自定义序列化
      自定义序列化是由ObjectInput/OutputStream在序列化/反序列化时候通过反射
      检查该类是否存在以下方法(0个或多个):执行顺序从上往下,序列化调用
      1和2,反序列调用3和4;transient关键字当某个字段被声明为transient后,默
      认序列化机制就会忽略该字段。

1. Object writeReplace() throws ObjectStreamException;可以通过此方法修改序列化的对象

2. void writeObject(java.io.ObjectOutputStream out) throws IOException; 方法中
   调用defaultWriteObject() 使用writeObject的默认的序列化方式,除此之外可
   以加上一些其他的操作,如添加额外的序列化对象到输出:out.writeObject("XX")

3. void readObject(java.io.ObjectInputStream in) throws Exception; 方法中调用
   defaultReadObject()使用readObject默认的反序列化方式,除此之外可以加
   上一些其他的操作,如读入额外的序列化对象到输入:in.readObject()

4.Object readResolve() throws ObjectStreamException;可以通过此方法修改返回的对象

具体步骤见链接:https://www.cnblogs.com/yoohot/p/6019767.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值