JAVA-序列化与反序列化
java序列化就是把对象转化成字节序列的过程,而反序列化就是将字节序列恢复为java对象的过程。
序列化与反序列化可以用在两个进程之间或者网络间传递java对象,或者想对某个对象进行持久化存储时
序列化与反序列化有几种常见的协议比如XML,JSON,Protobuf;
在实际使用中,只有实现了Serializable或者Externalizable接口的类的对象才能被序列化。
Serializable简单点来说是个空接口,主要是告诉jvm虚拟机这个可以需要他序列化,另外源码注释中一般显式要求声明一个SerializableID,用于唯一标识这个java对象,虽然你不写也会默认通过这个对象的属性计算,但是不同的虚拟机可能算出来不一样,所以如果用的jvm不一样有可能在反序列化时会出问题。至于Externalizable接口是给我们提供了两个自定义序列化和反序列化的方法。