JAVA编程技术基础:对象的串行化(Serialization)
一.序列化的概念和目的
1。什么是序列化?
对象的生存期通常随着生成该对象的程序的终止而结束。有时,可能需要保存对象的状态,并在必要时恢复它。我们记录自己状态的能力,以便在未来再生。这叫做对象的持久性。对象通过写描述它们状态的数值来记录它们自己。这个过程称为对象的序列化。序列化的主要任务是写出对象实例变量的值。如果交集是对另一个对象的引用,则被引用的对象也应该被序列化。这个过程是递归的,序列化可能涉及到一个复杂树形结构的单一性,包括原始对象、对象的对象、对象的对象等等。对象所有权的层次结构称为图。
2.序列化的目的
Java对象单一性的目标是为Java的运行环境提供一组特性,如下:
1)尽量保持对象序列化简单明了,但是提供一种方法,使其可扩展或者根据开发人员的要求进行定制。
2)序列化机制要严格遵循Java的对象模型。对象的序列化状态应该包含关于类别的安全特征的所有信息。
3)对象的序列化机制要支持Java对象的持久性。
4)对象的序列化机制应该具有足够的可扩展性,以支持对象的远程方法调用(RMI)。
5)对象序列化应该允许对象定义自己的格式,也就是自己的数据流表示,并将接口外部化来完成这个功能。
二。序列化方法
从JDK1.1开始,Java语言就提供了对象序列化机制。在java.io包中,接口序列化作为实现对象序列化的工具,只能序列化实现序列化的类的对象。
Serializable接口中没有方法。当一个类声明实现可序列化接口时,只是表明该类参与了序列化协议,没有任何特殊的方法。下面通过例子介绍如何序列化对象。
1.定义一个可序列化的对象。
如果一个类的对象可以序列化,那么它必须实现Serializable接口。我们将班级学生定义如下:
公共类学生实现Serializable{
int id//学生ID
字符串名称;//名称
int age//年龄
字符串部门//部门
公共学生(整数id,字符串名称,整数年龄,字符串部门
ment){
this.id = id
this.name = name
this.age =年龄;
this.department =部门;
}
}
位律师回复
0条评论