快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱乐博娱188下载_集报网



序列化和记娱乐博娱188下载概述

简单来说序列化便是一种用来处置惩罚工具流的机制,所谓工具流也便是将工具的内容进行流化,流的观点这里不用多说(便是I/O),我们可以对流化后的工具进行读写操作,也可将流化后的工具传输于收集之间(注:要想将工具传输于收集必须进行流化)!在对工具流进行读写操作时会激发一些问题,而序列化机制恰是用来办理这些问题的!

问题的引出:

如上所述,读写工具会有什么问题呢?比如:我要将工具写入一个磁盘文件而后再将其读出来会有什么问题吗?别急,此中一个最大年夜的问题便是工具引用!举个例子来说:要是我有两个类,分手是A和B,B类中含有一个指向A类工具的引用,现在我们对两个类进行实例化{ A a = new A(); B b = new B(); },这时在内存中实际上分配了两个空间,一个存储工具a,一个存储工具b,接下来我们想将它们写入到磁盘的一个文件中去,就在写入文件时呈现了问题!由于工具b包孕对工具a的引用,以是系统会自动的将a的数据复制一份到b中,这样的话当我们从文件中规复工具时(也便是从新加载到内存中)时,内存分配了三个空间,而工具a同时在内存中存在两份,想一想后果吧,假如我想改动工具a的数据的话,那不是还要搜索它的每一份拷贝来达到工具数据的同等性,这不是我们所盼望的!

以下序列化机制的办理规划:

1.和记娱乐博娱188下载保存到磁盘的所有工具都得到一个序列号和记娱乐博娱188下载(1, 2, 3等等)

2.当要保存一个工具时,先反省该工具是否被保存了。

3.假如曩昔保存过,只需写入"与已经保存的具有序列号x的工具相同"的标记,否则,保存该工具

经由过程以上的步骤序列化机制办理了工具引用的问题!

序列化的实现

将必要被序列化的类实现Serializable接口,该接口没有必要实现的措施,implements Serializable只是为了标注该工具是可被序列化的,然后应用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(工具流)工具,接着,应用ObjectOutputStr和记娱乐博娱188下载eam工具的writeObject(Object 和记娱乐博娱188下载obj)措施就可以将参数为obj的工具写出(即保存其状态),要规复的话则用输入流。

例子:

import java.io.*;

public class Test

{

public static void main(String[] args)

{

Employee harry = new Employee("Harry Hacker", 50000);

Manager manager1 = new Manager("Tony Tester", 80000);

manager1.setSecretary(harry);

Employee[] staff = new Employee[2];

staff[0] = harry;

staff[1] = manager1;

try

{

ObjectOutputStream out = new ObjectOutputStream(

new FileOutputStream("employee.dat"));

out.writeObject(staff);

out.close();

ObjectInputStream in = new ObjectInputStream(

new FileInputStream("employee.dat"));

Employee[] newStaff = (Employee[])in.readObject();

in.close();

/**

*经由过程harry工具来加薪

*将在secretary上反应出来

*/

newStaff[0].raiseSalary(10);

for (int i = 0; i

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: