Java序列化之二: 从代码开始

本文介绍了Java序列化的基础知识,包括序列化的重要性和基本过程,并通过示例代码详细解释了序列化和反序列化的实现方法。此外,还探讨了如何自定义序列化机制,将对象转换为XML文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,最简单,最典型的序列化代码。
附录1中给出的JAVA代码虽然简单,却包含了一个典型的序列化过程中的大部分要点。下面针对该序列化过程中出现的每一个元素进行一一说明。

① 导入Serializable
import java.io.Serializable;

这是一个不含有任何方法声明的接口类。实现了该接口仅仅是一个标志,标志着该类可以被序列化。关于这个接口需要特别说明的是,为了能够把一个不可以被序列化的类对象(没有实现Serializable,non-serializable classes)的子类序列化,该super class的public域,protected域以及可能被访问到的package域的序列化工作由子类担任。这要求其父类中必须要包含一个没有参数的生成器。

② 关于serialVersionUID
private static final long serialVersionUID = 2356129180978015792L;


故名思议,这是一个版本号码,而且应该是特定系统中的唯一值。该值用来被反序列化的时候,校验当前被反序列化的对象是不是与当前的类定义版本一致。如果不一致的话,会产生 InvalidClassException异常这样一来,很显然该值应该被定义成 private static final这就可以解释,在使用eclipse定义Serializable对象的时候(类如Servlet),为什么Eclipse会自动生成一个serialVersionUID。

③ 序列化的过程(serialization)
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(myPerson);


④ 反序列化过程(deserialization)
 ObjectInputStream ois = new ObjectInputStream(fis);
Person myPerson = (Person) ois.readObject();


参见:附录1_最简单的序列化代码

2,实际上,如果项目需要我们也可以完全自定义一个序列化机制。如附录2所示。
参见:附录2_自定义的序列化过程该实例展示了如果将一个对象序列化成可以阅读的xml文档的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值