內部靜態類在使用時才會被加載。
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