一、什么是序列化
它是完整的保存了某一状态下的对象信息,是一个整体,而不是零散的!
二、为什么要序列化
1,存储对象在存储介质中,以便在下次使用的时候,可以很快捷的重建一个副本
2,便于数据传输,尤其是在远程调用的时候!
三、接口java.io.Serializable的用处
1、java.io.Serializable,表示序列化,是一个空接口,也就是说这个接口没有声明任何的方法,所以实现这个接口的类也就不需要实现任何的方法。
2、序列化 用在将对象编码成字节流(序列化)及从字节流编码重构对象(反序列化)。
序列化 为远程通信提供了标准的wire-level协议。
3、 要使类的实例实现序列化,只要在它的声明中加入implements java.io.Serializable
但是却由一些隐患
1 》 实现了序列化后,一旦发布,讲削弱改变类实现的灵活性。
2 》 增加了bug和安全漏洞的的可能性
3 》 当你的新版本发布时增加了相关的测试上的问题。
这个接口使得所有的实现它的类具有一个特殊的(mixin)类型,从而使JVM知道这个类可以安全地串行化。
4、如果你需要把一个Bean实例通过网络传输或者写到磁盘文件的话,那么实现Serializable接口是最简单的,你可以直接通过ObjectInputStream,ObjectOutputStream进行读入或者写出
5、为了EJB容器可以记录用户生存期期间用户的信息,在EJB中实现Stateful Session Bean时,必须继承Serializable。这样,EJB容器才能在它们不再使用时序列化存储它们的状态信息。