理解Java对象序列化(三)

2014-11-24 07:17:23 · 作者: · 浏览: 4
;
}

public static Person getInstance() {
return InstanceHolder.instatnce;
}

private String name = null;

private Integer age = null;

private Gender gender = null;

private Person() {
System.out.println("none-arg constructor");
}

private Person(String name, Integer age, Gender gender) {
System.out.println("arg constructor");
this.name = name;
this.age = age;
this.gender = gender;
}

private Object readResolve() throws ObjectStreamException {
return InstanceHolder.instatnce;
}

}再次www.2cto.com执行本节的SimpleSerial应用后将有如下输出:

arg constructor
[John, 31, MALE]
true
无论是实现Serializable接口,或是Externalizable接口,当从I/O流中读取对象时,readResolve()方法都会被调用到。实际上就是用readResolve()中返回的对象直接替换在反序列化过程中创建的对象,而被创建的对象则会被垃圾回收掉。
(持续更新中...)


摘自 Jiangshachina