先上代码
public class Singleton {
private static Singleton instance = null;
public static Singleton getInstance() {
if(instance == null) {
instance = SingletonLazy.lazy;
}
return instance;
}
private static class SingletonLazy {
public static Singleton lazy = new Singleton();
}
}
classloader首先会加载Singleton.class文件,运行到if(instance==null)这句的时候,如果为空,回去加载SingletoneLazy.class。如此便实现了lazy初始化。