Java程序对类的使用分为:主动使用和被动使用。
- 主动使用又分为其中情况:
▶创建类的实例
▶访问某个类或接口的静态变量,或者对静态变量赋值
▶调用类的静态方法
▶反射
▶初始化一个类的子类
▶Java虚拟机启动时被标明为启动类的类
▶JDK 7 开始提供的动态语言支持:java.lang.invoke.MethodHandle
实例的解析结果REF_getStatic、REF_putStatic、REF_invokeStatic句柄对应的类没有初始化,则初始化
-除了以上七种情况,其他使用Java类的方式都被看做是对类的被动使用,都不会导致类的初始化