类的初始化是类加载的最后一步。

对类的主动引用会引发类的初始化,而被动引用不会引发初始化。

主动引用有且只有下面 4 种情况:

  • 遇到newgetstaticputstaticinvokestatic这四条字节码指令时,需要触发初始化,常见场景为:new 关键字实例化对象、读取或设置一个类的静态字段、以及调用一个类的静态方法。
  • 对类进行反射调用时,如果类没有初始化,需要触发初始化。
  • 对一个类进行初始化,需要先初始化其父类。
  • 虚拟机启动时需要初始化主类(包含 main 方法的类)。

版权声明:本文为xmsx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xmsx/p/9866597.html