假设有class Student
一、加载类不初始化的情况
Test.class.getClassLoader().loadClass("Student");
Class clazz = Student.class;
这两种情况下,加载类,但是不会“链接“和”初始化”
通过命令:java -verbose:class test查看类加载器加载类情况可知类被加载了。
但是这个类的静态属性在方法区没有,且静态初始化块也没有执行,所以只加载了没有初始化。
原因:
- 在loadCLass方法中,resolve属性被设置为了false
- 在loadClass(String name, boolean resolve)方法中有以下代码
- resolveClass()方法调用的是native方法,该方法的注释告诉我们这个方法是“链接”过程
- 因为在2中resolve为false所以没有执行