--------------
当虚拟机载入某个class文件时,首先生成该class文件对应的类的Class对象,所以Class.forName()方法在进行类的加载时,生成了对应的类的Class对象,并且调用了其中的静态代码块。
但是反过来应该不成立,即你得到了该class文件对应的类的Class对象时(有点拗口,注意大小写),并不一定就加载了该class文件对应的类。楼主的.class方法得到了对应的Class对象,但是并没有加载该类,没有加载自然就不会执行静态代码块的内容。
-----------
类加载的时候不会执行,在类初始化的时候执行
类加载过程: Chapter 5. Loading, Linking, and Initializing
Class.forName(String name, boolean initialize,ClassLoader loader)
Class.forName() ---> initialize = true
网友评论