静态内部类在何时加载

内部静态类在使用时才会被加载。

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

原文地址:https://www.cnblogs.com/BonnieWss/p/12200943.html