什么是java序列化,如何实现java序列化?借鉴.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Java 序列化机制 Java 序列化是指将一个对象的状态写入一个 Byte 流里,并且可以从其它地方把该 Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。 Java 序列化的实现: 1. 将需要被序列化的类实现 Serializable 接口。 2. 使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象。 3. 使用 ObjectOutputStream 对象的 writeObject(Object obj) 方法将参数为 obj 的对象写出(即保存其状态)。 4. 要恢复的话则用输入流。 Java 序列化的特点: 1. 如果某个类能够被序列化,其子类也可以被序列化。如果该类有父类,则分两种情况来考虑,如果该父类已经实现了可串行化接口,则其父类的相应字段及属性的处理和该类相同;如果该类的父类没有实现可串行化接口,则该类的父类所有的字段属性将不会串行化。 2. 声明为 static 和 transient 类型的成员数据不能被串行化。因为 static 代表类的状态,transient 代表对象的临时数据。 相关的类和接口: 1. ObjectOutput 接口:它继承 DataOutput 接口并且支持对象的串行化,其内的 writeObject() 方法实现存储一个对象。 2. ObjectOutputStream 类:它继承 OutputStream 类并且实现 ObjectOutput 接口。利用该类来实现将对象存储(调用 ObjectOutput 接口中的 writeObject() 方法)。 3. ObjectInput 接口:它继承 DataInput 接口并且支持对象的串行化,其内的 readObject() 方法实现读取一个对象。 4. ObjectInputStream 类:它继承InputStream类并且实现 ObjectInput 接口。利用该类来实现读取一个对象(调用 ObjectInput 接口中的 readObject() 方法)。 父类的处理: 如果父类没有实现串行化接口,则其必须有默认的构造函数(即没有参数的构造函数)。否则编译的时候就会报错。在反串行化的时候,默认构造函数会被调用。但是若把父类标记为可以串行化,则在反串行化的时候,其默认构造函数不会被调用。这是因为 Java 对串行化的对象进行反串行化的时候,直接从流里获取其对象数据来生成一个对象实例,而不是通过其构造函数来完成。 示例代码: ```java import java.io.*; public class Cat implements Serializable { private String name; public Cat() { this.name = "new cat"; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public static void main(String[] args) { Cat cat = new Cat(); try { FileOutputStream fos = new FileOutputStream("catDemo.out"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(cat); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的示例代码中,我们定义了一个名为 Cat 的类,该类实现了 Serializable 接口。然后,我们使用 ObjectOutputStream 对象将 Cat 对象写入到文件中。
- 粉丝: 0
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java项目,课程设计-#-ssm-mysql-数据结构课堂考勤管理系统.zip
- 汽车起动机市场:2023年我国起动机的市场规模已高达480亿元人民币
- java项目,课程设计-#-ssm-mysql-商品信息分类管理系统.zip
- DataGuard容灾配置过程-for-Oracle11gR2
- HPSocket.Net库文件以及使用说明
- express 基础框架搭建
- Oracle DataGuard 安装配置详解:从主备环境搭建到故障切换
- 前端封装video.js、对接海康插件npm包
- 2024年下半年网络工程师案例分析真题答案解析-网络设计与故障排除
- 打印机清零 爱普生XP-4105 系列清零 清除提示无边框不能打印 亲测可用