此段代码并不会输出静态内部类中静态块的内容,也就证实了静态内部类只会在在被外部类调用的时候加载。这个特性刚好方便实现单例模式中的懒汉式加载。
public class Test {
static class SubTest{
static {
System.out.println("静态内部类不同于静态成员,只在被外部类调用的时候加载");
}
}
public static void main(String[] args) {
//SubTest st = new SubTest();
}
}
这个特性刚好方便实现单例模式中的懒汉式加载。
public class Test {
private Test(){}
static class SubTest{
public static final Test INSTANCE = new Test();
}
public static Test getInstance(){
return SubTest.INSTANCE;
}
}