首页 > 代码库 > 第二章:创建和销毁对象。ITEM3:用私有构造器或者枚举类型强化Singleton属性。
第二章:创建和销毁对象。ITEM3:用私有构造器或者枚举类型强化Singleton属性。
声明一个Singleton类的3种方法:
package com.twoslow.cha2;/** * 可以通过AccessibleObject.setAccessible(),通过反射机制调用私有构造器。 * @author sai * */public class Singleton01 { private Singleton01(){} public static final Singleton01 INSTANCE = new Singleton01() ; private Object readResolve() { return INSTANCE ; }}
package com.twoslow.cha2;/** * 可以通过AccessibleObject.setAccessible(),通过反射机制调用私有构造器。 * @author sai * */public class Singleton02 { private Singleton02(){} private static final Singleton02 INSTANCE = new Singleton02() ; public static Singleton02 getInstance() { return INSTANCE ; } private Object readResolve() { return INSTANCE ; }}
package com.twoslow.cha2;/** * 为了实现单例类可序列化,仅仅在声明中添加implements Serializable是不够的。 * 必须声明所有实例域是瞬时(transient)的,并提供一个readResolve方法。否则, * 每次反序列化一个序列化的实例时,都会创建一个新的实例。 * 单元素的枚举类型提供了序列化机制,是实现Singleton最佳方法。 * @author sai * */public enum Singleton03 { INSTANCE ;}
第二章:创建和销毁对象。ITEM3:用私有构造器或者枚举类型强化Singleton属性。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。