学Java开发就到迪派教育,开办电脑计算机培训,会计培训,外语培训学校,影视包装专业学校,游戏设计培训专业,工业设计专业,教育局批准的培训学校,经过十多年的发展已经成为东北较具影响力的一所计算机专业培训学校,首批全科专修学校!
Java对象为什么要实现Serializable接口
要知道实现这个接口的原因,首先得需要了解这个接口的目的!
Serializable 接口的作用
我们先来看一下,Java API 文档对这个接口的解释:
实现了 java.io.Serializable 接口的类就表示是可序列化的,未实现此接口的类将不会将其任何状态序列化或反序列化。此接口没有方法或字段,仅用于标识可序列化的语义。
所以,这个问题就变成了,Java 对象为什么要序列化?我觉得有以下两个原因:
- 对象持久化:典型的比如 HTTP Session 对象,默认在内存中,重启后就会话就没了,为了保持会话,可以把它序列化到文件或者数据库。
- 分布式对象:比如 RMI(Remote Method Invocation, 虽然已经用的不多了),调用远程主机上的服务时,可以直接使用对象作为参数,方法就像在本地使用一样。
序列化和反序列化的内容是什么
序列化,就是通过 ObjectOutputStream 将对象的一部分字段值,甚至是集合字段的内容写入到一个文件中。
反序列化,就是使用 ObjectInputStream 按照之前写入的方式,从二进制文件中,读取内容,生成一个对应类的实例对象。