//一个实现了Serializable 的单例类,必须有一个readResolve 方法,用以返回它的唯一的实例。
//对一个实现了Serializable 的类进行了扩展,或者实现了一个扩展自Serializable 的接口,
//使得我们在无意中实现了Serializable。
static class Dog extends Exception {
public static final Dog INSTANCE = new Dog();
private Dog() {}
public String toString() {
return "Woof";
}
//用于解决返回新实例的问题
private Object readResolve() {
return INSTANCE;
}
}
static public Object deepCopy(Object obj) {
try {
ByteArrayOutputStream bos =
new ByteArrayOutputStream();
new ObjectOutputStream(bos).writeObject(obj);
ByteArrayInputStream bin =
new ByteArrayInputStream(bos.toByteArray());
return new ObjectInputStream(bin).readObject();
} catch(Exception e) {
throw new IllegalArgumentException(e);
}
}
标签:return,实现,Object,Dog,static,单例,new,Serializable From: https://blog.51cto.com/u_16131764/6370071