基础知识:ClassLoader - 静态代码块在什么时候执行

2017-10-22  本文已影响0人  Miya__Li

Java误区: 静态代码块,会在类被加载时自动执行?

--------------

当虚拟机载入某个class文件时,首先生成该class文件对应的类的Class对象,所以Class.forName()方法在进行类的加载时,生成了对应的类的Class对象,并且调用了其中的静态代码块。

但是反过来应该不成立,即你得到了该class文件对应的类的Class对象时(有点拗口,注意大小写),并不一定就加载了该class文件对应的类。楼主的.class方法得到了对应的Class对象,但是并没有加载该类,没有加载自然就不会执行静态代码块的内容。

-----------

类加载的时候不会执行,在类初始化的时候执行

类加载过程: Chapter 5. Loading, Linking, and Initializing

Java虚拟机 类加载的过程

java的static块执行时机

Class.forName(String name, boolean  initialize,ClassLoader loader)

Class.forName() ---> initialize = true

forName

上一篇 下一篇

猜你喜欢

热点阅读