Java类加载器的目的是什么?

Nav*_*oor 6 java classloader

我的问题是,JVM什么时候加载项目中的所有类?另外,为什么我们需要类加载器的概念.

如果您能给我一个使用类加载器的情况以及为什么在这种情况下使用类加载器的例子,我会很高兴.

aio*_*obe 13

JVM何时加载项目中的所有类.

JVM或多或少地"按需"加载类.即运行时中的所有类通常不会在启动时加载.

有关此主题的详细信息,请参阅这些URL:

为什么我们需要类加载器的概念

类加载器允许我们从各种来源加载类.

  • 磁盘上的jar文件
  • 运行时生成的字节数组
  • 来自Internet(这是applet的典型用例)

这使得应用程序的启动更加灵活和模块化.

举个例子说明你使用类加载器以及为什么在那里使用类加载器.

如果没有类加载器,您将无法走得太远,所以我将您的问题解释为"何时需要自定义类加载器".

我个人使用字节码操作库(ASM)进行了一些实验,在那里我用get-和set-method调用替换了字段访问.我使用自定义类加载器在加载类时重写它们.我不知道这是否是一个典型的用例,但重点是没有一个我不可能做到这一点!

您还可以想象一个插件系统从一些插件目录加载外围类.