Java中的类加载器(ClassLoader)是如何工作的?

Java类在编译后以字节码的形式存储在.class文件中。当需要时,类加载器(ClassLoader)将Java程序的类加载到内存中。类加载器(ClassLoader)是分层的,因此如果有加载类的请求,它将被委托给父类加载器。

Java中的ClassLoader 的类型如下所示

  • 引导类加载器

  • 扩展类加载器

  • 系统类加载器

示例

public class ClassLoaderTest {
   public static void main(String[] args) {
      System.out.println("该类的类加载器: " + ClassLoaderTest.class.getClassLoader());
      System.out.println("DNSNameService的类加载器: " + sun.net.spi.nameservice.dns.DNSNameService.class.getClassLoader());
      System.out.println("HashMap的类加载器: " + java.util.HashMap.class.getClassLoader());
   }
}

输出结果

该类的类加载器: sun.misc.Launcher$AppClassLoader@73d16e93
DNSNameService的类加载器: sun.misc.Launcher$ExtClassLoader@70dea4e
HashMap的类加载器: null