我正在阅读有关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?