Java中常见的类加载器包括以下几种:
启动类加载器(Bootstrap Class Loader): 它是Java虚拟机的一部分,负责加载Java核心类库,如java.lang和java.util等。启动类加载器是用本地代码实现的,不是Java类,因此在Java代码中无法直接获取对应的类对象。
扩展类加载器(Extension Class Loader): 它是sun.misc.Launcher$ExtClassLoader类的实例,负责加载Java扩展库,位于<JAVA_HOME>/lib/ext目录下的JAR文件。扩展类加载器是由启动类加载器加载的。
应用程序类加载器(Application Class Loader): 它是sun.misc.Launcher$AppClassLoader类的实例,也称为系统类加载器。它负责加载应用程序的类,包括应用程序的类路径(classpath)下的类文件。应用程序类加载器是由扩展类加载器加载的。
除了上述常见的类加载器,还可以使用自定义类加载器来实现特定的类加载需求,例如动态加载类、从非标准位置加载类等。自定义类加载器需要继承自java.lang.ClassLoader类,并重写findClass()方法来实现自定义的类加载逻辑。
需要注意的是,不同的类加载器具有不同的加载范围和优先级,类加载器之间按照层次结构进行组织和委派。这种层次结构的组织方式确保了类的唯一性和相等性,并提供了类隔离和版本隔离的能力。
网友评论