为什么要实现序列化
序列化(Serialization)#
- 序列化是将对象的状态信息转换为可以存储或传输形式的过程。在序列化期间,对象将其当前的状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象
- 简单来说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用自己的各种各样的方法来保存Object States,但是Java给你提供了一种应该比你自己好的保存对象状态的机制,那就是序列化
序列化的作用#
- 序列化是针对自定义类型或者零散数据,好处是让数据方便存储和传输,可以统一存储和传输,标准序列化传递后,还可以一次读取出来。
- 序列化的目的是标准化和可存储,通常用于数据库、文件操作以及和系统标准化函数进行通信
具体作用:
- 以某种存储形式使自定义对象持久化
- 将对象从一个地方传递到另一个地方
- 使程序更具维护性
序列化的三个使用场景#
- 当你想把内存中的对象保存到一个文件中或者数据库中时
- 当你想用套接字在网络上传送对象时
- 当你想通过RMI传输对象时
注意#
- 当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口
- 当一个对象的示例变量引用其他对象,序列化该对象时也把引用对象进行序列化
- 并非所有对象都可以序列化,原因:
- 安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如要写到文件,或者进行RMI(远程方法调用)传输 等等,在序列化进行传输的过程中,这个对象 的private等域是不受保护的
- 资源分配方面的原因,比如socket,thread类,如果可以序列化进行传输或者保存,也无法对他们进行重新的资源分配,也没有必要这样实现
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)