Java实现序列化的作用和目的
1 package model; 2 3 import java.io.ObjectStreamField; 4 import java.io.Serializable; 5 6 /** 7 * @author liangd 8 * date 2020-11-12 16:16 9 * code 实例化字段 10 */ 11 public class UserModel implements Serializable { 12 /* 13 * 实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。 14 * 如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。 15 * 16 * serialVersionUID作用: 17 * 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。 18 * 19 * 生成serialVersionUID的两种方式 20 * 1、默认的1L 21 * 2、根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段 22 */ 23 //默认 24 // private static final long serialVersionUID = 1L; 25 private static final long serialVersionUID = -8940196742313994740L; 26 private int id; 27 //被transient修饰的字段不会被实例化 28 // private transient String username; 29 private int age; 30 private int sex; 31 private String address; 32 33 /** 34 * 序列化字段的两种方式: 35 * 1、默认方式,Java对象中的非静态和非transient的字段都会被定义为需要序列的字段。 36 * 2、另外一种方式是通过 ObjectStreamField 数组来声明类需要序列化的对象。 37 */ 38 private static final ObjectStreamField[] serialPersistentFields = { 39 new ObjectStreamField("username", String.class), 40 new ObjectStreamField("age", int.class) 41 }; 42 /* 43 Java 中进行序列化操作需要实现 Serializable 或 Externalizable 接口。 44 序列化的目的有两个,第一个是便于存储,第二个是便于传输。 45 一、序列化作用: 46 1、 提供一种简单又可扩展的对象保存恢复机制。 47 2、 对于远程调用,能方便对对象进行编码和解码,就像实现对象直接传输。 48 3、 可以将对象持久化到介质中,就像实现对象直接存储。 49 4、 允许对象自定义外部存储的格式。 50 51 二、何时需要实现序列化 52 在存储时需要序列化 53 54 三、平常实体类没有实现Serializable接口,怎么也能存进数据库呢? 55 是因为在声明变量的时候,例如String、int、Boolean等时,数据类型已经实现了序列化 56 */ 57 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix