【Java】序列化与反序列化
JAVA 序列化
2023-06-13 09:15:37 时间
1. 对象的序列化机制是什么?
对象序列化机制允许把内存中的Java对象转化成语平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。
当其他程序获取了这种二进制流,就可以恢复成原来的Java对象。
2. Java自定义类序列化要求:
- 自定义类需要实现接口:Serializable(标识接口:无任何属性或抽象方法),否则会报
NotSerializableException
异常 - 要求自定义类声明一个全局常量:static long serialVersionUID = 42234234L;
- 该常量必须是:static long 类型的,对权限修饰符没有要求
- 该常量用于唯一标识该类,所以每个类的常量值都一样保持不一致
- 要求自定义类的各个属性也必须是可以序列化的:
- 对于基本数据类型:默认就可以序列化,因为底层已经实现类了Serializable接口
- 若某个属性是引用数据类型:那么这个属性所在类也要求实现Serializable接口
3. 注意点:
- 如果没有声明全局常量serialVersionUID,系统也会自动声明一个针对于当前类的serialVersionUID。
但是,当此类发生任何修改,都会导致serialVersionUID被修改,进而导致反序列化时,出现
InvalidClassException
异常。 - 若某个属性不想被序列化,则该属性必须注明是瞬态的,使用
transient
关键字修饰。 - 静态(
static
)变量的值不会序列化。因为静态变量的值不属于某个对象 是属于类的。
相关文章
- java random函数用法_JAVA的Random类的用法详解[通俗易懂]
- Java基础之序列化对象Serialized
- 【说站】java方法重载
- 《Think in Java》第一章:对象导论之访问控制
- java 舆情分析_基于Java实现网络舆情分析系统研究与实现.doc[通俗易懂]
- Java截取字符串方法_java通过split截取字符串
- Java list foreach_java的foreach
- 广州java培训哪家教育机构比较好_广州java培训课程
- 一致性hash算法java_一致性hash和普通hash
- Java 对象和类
- Java小数点数字和百分号数字之间的转换详解编程语言
- 服务Linux启动Java服务:一步步去完成(linux启动java)
- MySQL与Java互调:构建高效业务系统(mysql调用java)
- 程序Linux命令调用Java程序实现交互(linux命令java)
- 国内首本系统讲解Java异步编程的书籍-java异步编程实战
- Java与Oracle的连接方式(java连oracle)
- 版本Linux查看Java版本的简单方法(linux 查看java)
- Java开发与Linux运维的高效协作(java与linux运维)
- Java模拟Oracle实现稳定数据库性能(java模仿oracle)
- Java与Oracle 一种天生的结合(java属于oracle)
- Java加速Oracle开发之旅(java中oracle包)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)
- java中常用的排序方法
- 使用JAVA判断凸多边形的示例代码