类加载器的类型有哪些?
Java的类加载器大体可以分为以下四种:
- 引导类加载器(Bootstrap ClassLoader):这是最顶层的类加载器,主要负责加载Java的核心类库,这些类库是Java运行时最基础的类库,如rt.jar、resources.jar、charsets.jar等。引导类加载器是C++实现的,它并不继承自java.lang.ClassLoader。
-
扩展类加载器(Extension ClassLoader):这是引导类加载器的子类,负责加载Java的扩展类库,如jce.jar、jsse.jar、jfr.jar等,以及java.ext.dirs路径下的jar包。扩展类加载器是Java实现的。
-
应用类加载器(Application ClassLoader):也被称为系统类加载器,是扩展类加载器的子类,负责加载用户类路径(ClassPath)上的类库。这个是程序默认的类加载器,也是ClassLoader.getSystemClassLoader()方法的返回值。
-
自定义类加载器(User ClassLoader):Java也允许我们自定义类加载器,我们可以继承java.lang.ClassLoader类,并覆盖其findClass()方法来自定义类加载器。自定义类加载器可以用于一些特殊的场景,比如需要从网络、数据库加载类,或者需要对类进行加密和解密等。
类加载器的主要作用是加载Java类到JVM中。当程序需要使用某个类时,如果这个类还没有被加载到内存中,那么系统就会通过类加载器来加载这个类。一旦类被加载到内存中,就可以创建这个类的对象,或者调用这个类的静态方法和静态字段。