前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java序列化

Java序列化

原创
作者头像
真率
修改2024-07-05 13:22:49
980
修改2024-07-05 13:22:49
举报
文章被收录于专栏:JavaJava
什么是序列化,如何实现序列化

概述

  • Java序列化是指将Java对象转换为二进制字节流,以便于持久化和传输的过程。反之,则称为反序列化
  • 默认的序列化实现由JVM负责,可序列化的对象需要实现Serializable接口
  • Serializable接口不包含任何方法,只用于标记该对象可序列化;若未实现该接口,则序列化时会报NotSerializableException异常

自定义序列化方式

  1. 在对象中重写 writeObject 和 readObject 方法
  2. 实现Externalizable接口

serialVersionUID常数

  • 该常数用于指定对象的版本,反序列化时会检查版本是否改变,若改变则会报错
  • 建议显示赋值该常量,否则jvm会根据对象属性、方法等自动生成,若序列化前后对象有变化,则版本号会重新生成,反序列化时就会抛异常

Externalizable

  • Externalizable 序列化的优先级比Serializable的优先级高
  • 使用 Externalizable 进行序列化时,必须要有默认的构造方法,而Serializable可以没有默认的构造方法。 这是因为使用 Externalizable 进行反序列化时,需要有默认的构造方法,通过反射先创建出该类的实例,然后再把解析后的属性值,通过反射赋值

其他注意事项

  • 静态变量不会被序列化
  • transient 关键字修饰的属性不会被序列化
  • Serializable反序列化时不会调用构造方法

参考文献

https://cloud.tencent.com/developer/article/1655892

https://cloud.tencent.com/developer/article/1130025

https://www.baeldung.com/java-serialization

https://www.baeldung.com/java-externalizable

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是序列化,如何实现序列化
  • 概述
  • serialVersionUID常数
  • Externalizable
  • 其他注意事项
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档