内部静态类在使用时才会被加载。
public class InnerStaticSingleton { static { System.out.println("2222"); } private static class SingletonFactory{ static { System.out.println("1111"); } private static InnerStaticSingleton instance=new InnerStaticSingleton(); } public static InnerStaticSingleton getInstance(){ return SingletonFactory.instance; } public static void main(String[] args){ InnerStaticSingleton.getInstance(); } }
如果main()方法中什么都不执行则仅会输出:
2222
如果main()方法中调用静态内部类,如上代码,输出:
2222
1111