Java序列化的机制和原理

发表于:2010-5-13 10:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
java
#
Java

  有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。

  Java序列化算法透析

  Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列化以及Java序列化的算法,我们用一个实例来示范序列化以后的字节是如何描述一个对象的信息的。

  序列化的必要性

  Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。

  如何序列化一个对象

  一个对象能够序列化的前提是实现Serializable接口,Serializable接口没有方法,更像是个标记。有了这个标记的Class就能被序列化机制处理。

1.import java.io.Serializable;
2.
3.class TestSerial implements Serializable {
4.
5.       public byte version = 100;
6.
7.       public byte count = 0;
8.
9.}

  然后我们写个程序将对象序列化并输出。ObjectOutputStream能把Object输出成Byte流。我们将Byte流暂时存储到temp.out文件里。

10.public static void main(String args[]) throws IOException {
11.
12.       FileOutputStream fos = new FileOutputStream("temp.out");
13.
14.       ObjectOutputStream oos = new ObjectOutputStream(fos);
15.
16.       TestSerial ts = new TestSerial();
17.
18.       oos.writeObject(ts);
19.
20.       oos.flush();
21.
22.       oos.close();
23.
24.}

  如果要从持久的文件中读取Bytes重建对象,我们可以使用ObjectInputStream。

25.public static void main(String args[]) throws IOException {
26.
27.       FileInputStream fis = new FileInputStream("temp.out");
28.
29.       ObjectInputStream oin = new ObjectInputStream(fis);
30.
31.       TestSerial ts = (TestSerial) oin.readObject();
32.
33.       System.out.println("version="+ts.version);
34.
35.}

  执行结果为

100.

41/41234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号