什么是类加载器

类加载器(ClassLoader)是Java中的一个重要组件,它负责加载字节码文件到JVM中。在Java中,类加载器的主要任务是根据一个类的全限定名来读取该类的二进制数据流到JVM内存中,然后转换为java.lang.Class类的一个实例。

Java平台提供了以下几种类型的类加载器:

  1. 引导类加载器(Bootstrap ClassLoader):这是最顶层的类加载器,主要负责加载JDK中的核心类库,如rt.jar、resources.jar、charsets.jar等。

  2. 扩展类加载器(Extension ClassLoader):这是引导类加载器的子类,负责加载JDK的扩展类库,如jce.jar、jsse.jar、jfr.jar等,以及java.ext.dirs路径下的jar包。

  3. 应用类加载器(Application ClassLoader):也叫系统类加载器,是扩展类加载器的子类,负责加载用户类路径(ClassPath)上的类库,这个是程序默认的类加载器。

除此之外,用户还可以自定义类加载器,通过继承java.lang.ClassLoader类并重写其loadClass方法来实现。自定义类加载器可以用于一些特殊的场景,如需要对类进行加密解密,或者从非标准的来源(如网络、数据库)加载类等。

类加载器的另一个重要特性是双亲委派模型(Parent Delegation Model)。当一个类加载器收到类加载请求时,它首先不会自己尝试去加载这个类,而是把这个请求委托给父类加载器去执行,每一层都是如此,因此所有的加载请求最终都应该传送到顶层的引导类加载器中。如果父类加载器无法处理这个请求(找不到所需的类),那么子加载器才会尝试自己去加载。这种模型可以保证类的唯一性,以及安全性。

发表评论

后才能评论