package fanshe;
public class Person {
private int age;
private String name;
static {
System.out.println("initial static block...");
}
}
package fanshe;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Mymain {
public static void main(String[] args) throws Exception{
ClassLoader c1 = ClassLoader.getSystemClassLoader();
c1.loadClass("fanshe.Person");
System.out.println("系统加载Person类");
Class.forName("fanshe.Person");
}
}输出结果:
系统加载Person类
initial static block...
原因: ClassLoader 加载类时不会进行类的初始化, Class.forName()会强制初始化该类。
本文探讨了Java中反射机制的应用实例,展示了如何使用ClassLoader和Class.forName方法来加载并初始化自定义类。通过对比两者的行为差异,特别是对于静态块初始化的不同处理方式,深入理解Java的类加载过程。
1547

被折叠的 条评论
为什么被折叠?



