网站首页 > 资源文章 正文
序列化
Java的serialization提供一种持久化对象实例的机制。当进行远程通信时,无论何种类型的数据,都会以二进制序列的形式在网络上传送。序列化是一种将对象转换成字节序列的过程,用于解决在对对象流进行读写操作时所引发的问题。序列化可以将对象的状态写在流里进行网络传输,或保存到文件、数据库等,并在需要时把该流读取出来重新构造成一个相同的对象。
Java中如何实现序列化
- 要实现序列化的类必须实现 java.lang.Serializable接口;
- 使用一个输出流,比如:FileOutputStream,构造一个ObjectOutputStream对象;
- 使用对象的writeObject方法将obj对象写出(即保存其状态),恢复时可以使用对应的输入流
transient
当序列化持久一个对象时,可能并不需要序列化持久所有的属性,对于这种情况,可以通过在属性前加上关键字transient来实现。
序列化的特点
- 如果一个类能被序列化,那么它的子类也能够被序列化;
- 由于static代表类的成员,transient代表对象的临时数据。被声明为这两种类型的数据成员不能够被序列化;
- 子类实现了java.lang.Serializable接口,父类没有,父类中的属性不能被序列化,但子类中的属性可以被序列化。
举例
class SuperClass{
public String name;
}
class Sub extends SuperClass implements Serializable {
private float radius;
transient int color;
public static String type = "type";
}
在序列化一个Sub类的对象sub到文件时,只有radius属性能被保存到文件中。
可以通过序列化与反序列化来破坏设计模式中的单例模式(只能被实例化一个对象的类)。前提是单例类实现java.lang.Serializable 接口。序列化对象保存到文件,然后反序列化文件生成一个对象,堆中出现了两个类的实例对象,虽然对象的各类型属性的值一样,但id不一样。从而破坏了单例模式
- 上一篇: IGBT驱动之隔离器CMTI参数
- 下一篇: 被遗忘的Java关键字:transient!
猜你喜欢
- 2024-11-23 Spring JPA 查询提示错 org.hibernate.TransientObjectException
- 2024-11-23 ArrayList & Vector (transient关键字)--JAVA成长之路
- 2024-11-23 SPL 发布第二代 Transient Designer 4 Mk2 动态处理器,外观重新设计
- 2024-11-23 新版本系统适配:Android 12 中的兼容性变更
- 2024-11-23 5万年一遇彗星将造访地球 或肉眼可见
- 2024-11-23 深入了解Java transient关键字的用法和注意事项
- 2024-11-23 一次线上故障:数据库连接池泄露后的思考
- 2024-11-23 福利:Audio Assault 的 Transient+瞬态塑形效果器插件限时免费
- 2024-11-23 为什么 ArrayList 的 elementData 加上 transient 修饰?
- 2024-11-23 Java中transient关键字
你 发表评论:
欢迎- 05-21外贸人必备8个效率外贸工具合集
- 05-21Dify实战:解除Dify知识库上传文件15MB限制的
- 05-21腾讯云国际站:怎样优化TCP传输效率?
- 05-21电脑文件怎么压缩
- 05-21手机扩容新方案,搭配腾隐P2000移动固态硬盘,还可以在再战几年
- 05-21如何安全的传输文件(2)
- 05-21前端大文件秒传黑科技!程序员集体沸腾
- 05-21128GB内存8060S最强核显!极摩客EVO-X2 Max+ 395开箱
- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)