Serializable仅仅是一个标记,它并不包含序列化和反序列化的具体逻辑。只是告诉JVM继承了该接口的类的对象可以序列化和反序列化。
什么是序列化和反序列化?
序列化是把对象转换成字节流的过程,字节流可以保存成文件,网络传输,存储到数据库等等。反序列化则是把字节流转换为对象的过程。
为什么要继承Serializable才能序列化和反序列化?
继承Serializable接口是为了显示声明一个类是否支持序列化,而不是JVM随意地对所有类进行序列化。因为不是所有类都适合进行序列化,因为序列化会保存对象当前的状态和数据,如果对象有依赖外部系统的状态和数据,并在反序列化之前改变了,那么会导致状态和数据出现错误。