反射之ClassLoader(类加载器)
程序员文章站
2022-05-12 11:43:32
...
- 1:类加载器的概述
*负责将.class文件加载到内存中,并为之生成对应的Class对象。虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行。 2:类加载器的分类
*Bootstrap ClassLoader 根类加载器
*Extension ClassLoader 扩展类加载器
*Sysetm ClassLoader 系统类加载器3:类加载器的作用
*Bootstrap ClassLoader 根类加载器
(1)也被称为引导类加载器,负责Java核心类的加载
(2)比如System,String等。在JDK中JRE的lib目录下rt.jar文件中
*Extension ClassLoader 扩展类加载器
(1)负责JRE的扩展目录中jar包的加载。
(2)在JDK中JRE的lib目录下ext目录
*Sysetm ClassLoader 系统类加载器
(1)负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径
- 4.类加载机制的层次关系
package test;
public class ClassLoaderDemo {
public static void main(String[] args) {
ClassLoader classloader;
//获取系统缺省的ClassLoader
classloader = ClassLoader.getSystemClassLoader();
System.out.println(classloader);
while (classloader != null) {
//取得父的ClassLoader
classloader = classloader.getParent();
System.out.println(classloader);
}
try {
Class cl = Class.forName("java.lang.Object");
classloader = cl.getClassLoader();
System.out.println("java.lang.Object's loader is " + classloader);
cl = Class.forName("com.atguigu.javase.reflection.ClassLoaderDemo");
classloader = cl.getClassLoader();
System.out.println("ClassLoaderDemo's loader is " + classloader);
} catch (Exception e) {
System.out.println("Check name of the class");
}
}
}