需求:
- 字节、字符可以直接保存到文件中,即使程序不再运行,也依然存在。在某些情况,也希望对象能够在程序不运行的情况下仍能存在并保存其信息。
- 字节、字符可以自由的在网络间传输(字节流、字符流),但是这都是些简单符号,不能做逻辑处理。某些情况下,希望对象也能在网络中传输,进行相关逻辑操作。
序列化就是解决这两件事的。
基本概念
序列化: 把对象转换为字节序列的过程称为对象的序列化。
反序列化: 把字节序列恢复为对象的过程称为对象的反序列化。
概念都是抽象晦涩的。要结合代码理解
话不多说,上代码
实现序列化/反序列化有两种方法,一种是实现Serializable
接口,另一种是实现Externalizable
接口。
- 实现Serializable接口方式:
- 实现
Externalizable
接口方式:
用途
把对象放redis缓存中,实现分布式服务器间的对象共享,例如:共享session。
其他的要点
- 静态变量不能被序列化,因为静态变量属于类而不是对象。
- 被transient修饰的变量,不再是序列化的一部分
未完待续…