Java中的类加载器究竟是什么?

时间:2011-02-04 23:39:08

标签: java classloader

当客户在Java中说“Code不应该有自定义类加载器”时,这究竟意味着什么?我不能做什么?

4 个答案:

答案 0 :(得分:12)

类加载器是Java中的一个对象,负责查找Java类的二进制表示并将它们加载到JVM中。所有JVM都以一个启动类加载器开头,负责加载用户的初始类,以及一些内置类型,如ClassSecurityManager,但是用户可以提供自己的类加载器来查找来自其他来源。例如,自定义类加载器可以通过编写自己的字节码来生成自己的类,也可以从联网源中查找类。

为了符合客户的要求,您不应该定义自己的类加载器,而应该依赖引导类加载器来查找所有类。这几乎普遍是在简单的Java程序中完成的,因为自定义引导加载程序的用例通常相当复杂和细微差别。除非您特别想要更改JVM查找和加载类的方式,否则您不必担心此限制。

答案 1 :(得分:1)

自定义类加载器通常用于动态生成代码或增强现有类。

例如,一些ORM实现(JDO)使用它来创建处理将Java对象转换为数据库表的代码。其他用途是透明集群解决方案(如Terracota),其中对象得到增强,以便它们自动在集群中自我复制。

这基本上阻止您动态生成代码并将其注入现有应用程序。

答案 2 :(得分:0)

类加载器是一个负责加载类的对象。每当使用new实例化一个类时,运行时系统都会尝试使用ClassLoader抽象类的一个或多个实例加载该类。您可以定义自定义类加载器以从网络,数据库,其他进程或任何可想到的数据源加载类。

因此,如果您的客户端不希望您使用自定义类加载器,那么请务必不要编写扩展ClassLoader或其任何派生类的类。有关更多详细信息,请参阅ClassLoader java API文档。

答案 3 :(得分:0)

自定义类加载器可以让您从非常规来源(从您可以想象的任何地方,包括无处不在,即即时创建)加载类。由于您的客户端正在说该消息,因此只能从标准源(例如文件系统,jar文件等)加载类。

相关问题