Java实体类的序列化

Java序列化是将对象转换为二进制流的过程,便于存储和网络传输。主要用途包括对象持久化和跨平台传输。要实现序列化,需让类实现Serializable接口。若不想序列化某些变量,可将其声明为static或transient。serialVersionUID用于版本控制,当类结构改变时,如果不一致可能导致反序列化失败。通过设置此值,可以确保不同版本之间的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java实体类的序列化:

1.什么是Java的序列化?
    序列化就是把对象改成二进制的过程。是可以存储或者传输的过程。

2.序列化有什么用?
我们创建出来的这些对象都存在于JVM中的堆(heap)内存中,只有JVM处于运行状态的时候,这些对象才可能存在。一旦JVM停止,这些对象也就随之消失;但是在真实的应用场景中,我们需要将这些对象持久化下来,并且在需要的时候将对象重新读取出来,Java的序列化可以帮助我们实现该功能。
    可以保存在磁盘上或者网络发送。
    一般实现java.io.Serializeble可以实例化。
    也可以实现java.io.Externalizable来进行实例化。
    ObjectInputStream和ObjectOutPutStream进行存储和读取对象。

3.如果希望某些变量不序列化,该怎么做?
    变量声明成静态变量 static
    变量声明成瞬态变量 transient

4. 静态long类型常量serialVersionUID的作用:
    如果没有设置这个值,你在序列化一个对象之后,改动了该类的字段或者方法名之类的,那如果你再反序列化想取出之前的那个对象时就可能会抛出异常,因为你改动了类中间的信息,serialVersionUID是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,当修改后的类去反序列化的时候发现该类的serialVersionUID值和之前保存在问价中的serialVersionUID值不一致,所以就会抛出异常。而显示的设置serialVersionUID值就可以保证版本的兼容性,如果你在类中写上了这个值,就算类变动了,它反序列化的时候也能和文件中的原值匹配上。而新增的值则会设置成null,删除的值则不会显示。

5.也可以将它们转化为一种公共的格式

在这里插入图片描述
就如左边的客户端访问右边数据库,一般情况下都是在同一个windows下,如果将服务器部署到linux上,这就设计到不同的主机。

客户端可以调用服务器,所以会传递参数,假如你传递的是字符串,那么双方都是可以识别的,假设你传递的是一个Java对象,那么服务器就不识别不了这个Java对象,本质上Java对象是class字节码,服务器并不一定能识别字节码文件,那么我们把Java对象转化成公共的格式叫做序列化,将公共的格式转化为对象叫做反序列化。而保存到系统文件或者数据库中只是一种表示形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值