经常遇到的一道笔试题,此处自己喜欢编写的饿汉式和静态内部类的方式
不考虑反序列化的问题,不相信会有这么傻逼的要必须要将单例进行反序列化来破坏单例
饿汉式:
class Singleton {
private static final Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
静态内部类方式,能实现懒加载,因为静态内部类只有被调用的时候才会进行加载,静态内部类是随着外部类的加载而加载的,这样就可以实现懒加载
class Singleton {
private Singleton(){}
public static Singleton getInstance() {
return SingletonHodler.instance;
}
private static class SingletonHodler {
public static final Singleton instance = new Singleton();
}
}