五种情况必须对类进行初始化

1:遇到如下关键词。
new: 使用new关键字实例化对象的时候。
getstatic/putstatic:读取或设置一个类的静态字段。
invokestatic:调用一个类的静态方法。

2:对类进行反射调用的时候。如果没有进行初始化,则需要先触发其初始。

3:若父类没有进行初始化,则先父后子。

4:虚拟机启动时,会先初始化指定的主类。(包含main()方法的那个类)

5:使用动态语言支持时,若实例的最后解析结果的方法句柄,其方法句柄所对应的类没有进行过初始化。

以上五种情况必须对类进行初始化。

备注:被final修饰,和static的类变量在类进行准备的时候就进行了初始化。


Boy-20180721

你可能感兴趣的:(五种情况必须对类进行初始化)