本文主要是探究,在反序列化过程中是怎么调用到readObject、readResolve、readExternal方法的问题
新建一个需要被序列化的类ObjectA,写入readResolve和readObject方法:
package com.yy.serialize.readResolve;
import java.io.IOException;
import java.io.Serializable;
public class ObjectA implements Serializable {
private ObjectA() {
}
private static final ObjectA objectA = new ObjectA();
public static ObjectA getInstance() {
return objectA;
}
private Object readResolve() {
System.out.println("执行了readResolve方法");
return objectA;
}
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException