静态内部类是一个很好的实现单例的方式:
看代码:
package cn.liz.syn;
public class StaticInner {
// 私有化 构造器
private StaticInner(){
}
// 私有的静态内部类
private static class Inner{
static StaticInner single = new StaticInner();
}
// 公共的 获取实例的方法
public static StaticInner getInstance(){
return Inner.single;
}
}
测试:
总结:
静态内部类如何保证单例的呢?
和饿汉式类似,通过static保证在只在类加载的时候加载一次,也就是全局只有一份。
另外,如果不调用获取对象的方法,类就不会被加载,也就不会在每次外部类使用的时候就创建外部类对象,实现了懒加载。
另外。枚举中的属性因为都是该类的一个实例,因此配合枚举也是一个实现单例的很好的方法。