java序列化在内部是如何工作的?
我阅读了Java序列化的相关内容,并了解到,如果实现了可序列化接口,那么类就会被序列化
但是Serializable是一个标记接口。那么JVM如何知道应该使用哪些方法进行序列化或反序列化呢
据我所知,接口中声明的方法是通过多态性调用的
下面我举一个例子来说明我的问题
public class MySerializable implements Serializable{
public void serialize(){
//Some code to serialize to a file output stream.
}
public void deSerialize(){
//Some code to de-serialize to a file input stream.
}
}
那么现在JVM将如何调用方法序列化/反序列化呢
如果我必须通过代码手动调用它们,那么为什么要让编译器知道实现了可序列化接口
# 1 楼答案
是的,Serializable接口没有任何实现方法。如果要序列化对象,对象必须实现可序列化接口。接下来,可以对对象执行序列化/反序列化过程,例如使用ObjectOutputStream和ObjectInputStream对象
几乎没有什么例子
类,该类需要序列化/反序列化:
使用序列化/反序列化方法初始化:
也读this guide about serialization