我正在阅读有关Jvm体系结构的信息,但我无法理解其中的类加载器体系结构。我知道引导类加载器是什么,但无法理解用户定义的类加载器的工作原理,它如何在jvm中工作以及为什么需要它?

程序员是否编写用户定义的类加载器?我一直在研究Java,但没有使用过或看不到何时使用?请尝试以一种易于理解的方式进行解释,以便我可以完全理解它的含义。

最佳答案

什么是用户定义的类加载器?

用户定义的类加载器是扩展java.lang.Classloader或子类的类(标准Java库或第三方库未提供)。

程序员是否编写用户定义的类加载器?

是。

它在jvm中如何工作

就像其他类加载器一样。更具体地说,要加载类,它将类文件加载到byte[]中,然后调用defineClass类实现的ClassLoader方法。其他事情可能需要委托给父类加载器。

以及为什么需要它?

如果您需要类加载器的行为与常规类加载器不同,则将需要它。例如,您可能想要转换字节码,或从标准实现无法解决的地方加载它们。或者,您可能希望实现与正常模式不同的资源加载。

请尝试以一种易于理解的方式进行解释,以便我可以完全理解它的含义。

我建议您阅读有关类加载器的IBM教程:http://www.ibm.com/developerworks/java/tutorials/j-classloader/j-classloader.html易于理解,并包含一个自定义类加载器的工作示例。 (它有点旧,但这没关系。)

另外,还有很多替代方案... Google会告诉您。

如果只想了解类加载器,请阅读:What is a Java ClassLoader?

10-08 01:29