java反射 ClassLoader 和 Class.forName() 的区别

来源:互联网 发布:angularjs 读取json 编辑:程序博客网 时间:2024/06/05 02:11
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()会强制初始化该类。
阅读全文
0 0