forName()和loadClass()的区别
来源:互联网 发布:淘宝店铺运营规划书 编辑:程序博客网 时间:2024/06/11 04:07
共同点:
1.两者都会将用户指定的类加载到内存中,供用户使用
不同点:
- Class.forName有两个重载的方法,分别是:
public static Class<?> forName(String name, boolean initialize, ClassLoader loader)public static Class<?> forName(String className)
第一个方法,可以指定要不要始化加载类的static区块和static变量,用户自己可以指定ClassLoader;
第二个方法的具体实现是:
return forName0(className, true, ClassLoader.getClassLoader(Reflection.getCallerClass()));
也就是说,如果使用第二个方法的话,默认会初始化加载类的static区块和static变量,使用的ClassLoader是当前调用者的ClassLoader;
- ClassLoader.loadClass()也是有两个重载方法,分别是:
public Class<?> loadClass(String name)protected Class<?> loadClass(String name, boolean resolve)
第一个方法的具体实现是:
return loadClass(name, false);
第二个参数的意思是再加载类的时候要不要resolve对应的符合,它和上面的要不要初始化不一样。
第二个方法注意是protected的,所有只能是子类来调用。
总结,他们之间的区别就在于,Class.forName方法有要不要初始static变量的参数,而ClassLoader.loadClass()没有。
0 0
- forName()和loadClass()的区别
- Class.forname() 和 ClassLoader.loadClass()的区别
- Class.forName() 和 ClassLoader.loadClass()的区别?
- Class.forName() 和 ClassLoader.loadClass()的区别?
- Class.forName() 和 ClassLoader.loadClass()的区别
- Class.forName() 和 ClassLoader.loadClass()的区别?
- Class.forName() 和 ClassLoader.loadClass()的区别?
- Class.forName() 和 ClassLoader.loadClass()的区别
- Class.forName() 和 ClassLoader.loadClass()的区别?
- Class.forName和ClassLoader.loadClass的区别
- Class.forName和ClassLoader.loadClass的区别
- Class.forName() 和 ClassLoader.loadClass()的区别
- Java中forName和loadClass的区别
- Class.forName和ClassLoader.loadClass的区别
- ClassLoader.loadClass和Class.forName的区别
- forName与loadClass的区别
- Java中Class.forName()和ClassLoader.loadClass()的区别
- Java中的Loadclass和Class.forName的区别
- 解决ScrollView嵌套ListView滑动冲突显示不全的问题
- HDU5742(贪心)
- maven学习
- RuntimeWarning: Parent module 'settings' not found while handling absolute import
- HTML5开发Android程序
- forName()和loadClass()的区别
- Django入门:模板
- 习题14 提示和传递
- easyui tree树
- view加底线
- C语言实现双向循环链表
- Android中WebView与JS的交互
- mysql的简单使用
- 纠错: 深度学习模型优化时快速收敛