一个类的初始化只有在以下情况会进行:
1.执行引用C的Java虚拟机指令new,getstatic,putstatic或invokestatic的任何一条(§new,§getstatic,§putstatic,§invokestatic)。 这些说明直接引用了类或接口,或者
通过字段引用或方法引用间接进行。
2.第一次调用java.lang.invoke.MethodHandle实例。
3.在类库中调用某些反射方法。
4.c是一个类,c的一个子类被初始化。
5.C是一个声明了非抽象,非静态方法的接口,一个直接或间接实现C的类被初始化。
6.c是一个类,Java虚拟机启动时将其指定为初始类。
原文:https://www.cnblogs.com/macbk/p/13621312.html