java中class.forName()和classLoader都可用来对类进行加载。
不同:1)class.forName()除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块,还会执行给静态变量赋值的静态方法
2)classLoader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块。
注:Class.forName(name, initialize, loader)带参函数也可控制是否加载static块。并且只有调用了newInstance()方法采用调用构造函数,创建类的对象,附上Class.forName()源码
1)classloader没有执行静态代码块
2)Class.forName执行了静态代码块
本文详细对比了Java中class.forName()和ClassLoader在类加载过程中的区别。class.forName()不仅加载类,还执行static块和静态方法,而ClassLoader仅负责加载.class文件。通过源码解析,深入理解两者的工作机制。
1550

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



