关于JAVA类加载大家发表一下见解吧
16lz
2021-01-22
编译器加载类要依靠classloader,而classloader有3个级别
从高到低分别是BootClassLoader(名字可能不准确),ExtClassLoader,AppClassLoader.
这3个加载器分别对应着编译器去寻找类文件的优先级别和不同的路径:
BootClassLoader对应jre/classes路径,是编译器最优先寻找class的地方
ExtClassLoader对应jre/lib/ext路径,是编译器次优先寻找class的地方
AppClassLoader对应当前路径,所以也是编译器默认找class的地方
Class.forName(className);
Thread.currentThread().getContextClassLoader().loadClass(className)
两种方式优缺点大家发表下
1)Class.forName(className);与调用者相关
2)Thread.currentThread().getContextClassLoader().loadClass(className)与线程相关
从高到低分别是BootClassLoader(名字可能不准确),ExtClassLoader,AppClassLoader.
这3个加载器分别对应着编译器去寻找类文件的优先级别和不同的路径:
BootClassLoader对应jre/classes路径,是编译器最优先寻找class的地方
ExtClassLoader对应jre/lib/ext路径,是编译器次优先寻找class的地方
AppClassLoader对应当前路径,所以也是编译器默认找class的地方
Class.forName(className);
Thread.currentThread().getContextClassLoader().loadClass(className)
两种方式优缺点大家发表下
7 个解决方案
#1
1)Class.forName(className);与调用者相关
2)Thread.currentThread().getContextClassLoader().loadClass(className)与线程相关
更多相关文章
- 如何将树路径转换为json对象
- Java - 获取ClassPath的路径和资源
- 在二叉树中找出和为某一值的所有路径-java实现
- 《深入理解Java虚拟机》:HotSpot虚拟机内的即时编译器
- ArcGIS JS API For JavaScript实现类台风运动路径与影响范围的显
- 蓝桥杯--第七届决赛:路径之谜