学习JVM原理-14.类装载时的Initialization并不总会执行
摘自《深入理解Java虚拟机》周志明著 代码里出现类名,未必就会初始化这个类. 不太严谨地说,只有你"用到"这个类时,类才会Initialize. 如果你只是点它的名,或者用的是它的父类,是不会Initialize的 直接看例子: class Bean { public static int beanValue = 123; static{ System.out.println("Bean inited"); } } main(){ new Bean(); // 会打印"Bean inited" } main(){ int i = Bean.beanValue;; // 会打印"Bean inited" } main(){ Class b = Bean.class; // 不会打印"Bean inited" } 再看下继承的情况 class SubBean extends Bean{ static { System.out.println("SubBean inited"); } public …