对象序列化单例
来源:互联网 发布:管理权限的软件 编辑:程序博客网 时间:2024/06/05 01:12
在序列化和反序列化时,如果要保证对象是唯一的(例如单例模式),需要加倍小心,通常会在实现单例和类型安全的枚举是发生。在此情况下,默认的序列化机制不适用。
public final class Singelton implements Serializable {
private Singelton() {
}
private static final Singelton INSTANCE = new Singelton();
public static Singelton getInstance() {
return INSTANCE;
}
}
如果将单例对象序列化,再从内存中反序列化该对象
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("test.dat"));
out.writeObject(single1);
ObjectInputStream in = new ObjectInputStream(new FileInputStream("test.dat"));
Singelton newsingle = (Singelton) in.readObject();
此时的newsingle与single1强完全不同,是一个全新的对象,破坏了单例原则。
为了解决这个问题,需要在类中添加一个特殊的序列化方法readResolve()方法。如果定义了该方法,则在对象被序列化之后就调用它。
public final class Singelton implements Serializable {
private Singelton() {
}
private static final Singelton INSTANCE = new Singelton();
public static Singelton getInstance() {
return INSTANCE;
}
private Object readResolve() throws ObjectStreamException {
return INSTANCE;
}
}
- 对象序列化单例
- 序列对象
- Java对象序列化
- 对象序列化
- Java对象序列化
- 对象序列化笔记
- 对象的序列化
- 对象序列化
- 对象序列化
- Java对象序列化
- Java对象序列化
- java对象序列化
- Java 对象序列化
- 对象的序列化
- 序列化ArcEngine对象
- 对象序列化
- Java 对象序列化
- Java对象序列化
- 导航菜单效果 (熔岩灯 flash效果)
- POJ 1487:Single-Player Games 浮点数高斯消元
- 论文阅读《Hamming embedding and weak geometric consistency for large scale image search》
- Go指南中的练习:Stringers
- Struts2结合EasyUI的combobox返回json
- 对象序列化单例
- ajax的操作步骤
- Fragment 嵌套-> ViewPage 嵌套->Fragment 不显示
- (2,1,2)卷积码的维特比译码Verilog实现
- nyoj--586--疯牛(二分&&枚举)
- 省市区解析
- 【uml】-九种图之活动图(Activity Diagram))
- CSS Hack代码与浏览兼容总结
- 用Python读取大文件(上)