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

Abh*_*war 3 java jvm

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

程序员是否编写用户定义的类加载器?我一直在研究java但是没有使用或者看不到它何时被使用?请尝试以易于理解的方式解释,以便我能够完全理解它是什么.

Ste*_*n C 5

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

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

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

是.

它在jvm中是如何工作的

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

为什么需要它?

如果您需要类加载器与普通类加载器的行为不同,则需要它.例如,您可能希望转换字节码,或从标准实现无法处理的位置加载它们.或者您可能希望以不同于正常模式的方式实现资源加载.

请尝试以易于理解的方式解释,以便我能够完全理解它是什么.

我建议你阅读这篇关于类加载器的IBM教程:http://www.ibm.com/developerworks/java/tutorials/j-classloader/j-classloader.html 它的设计易于理解,并包含一个有用的实例.自定义类加载器.(这有点旧,但这不重要.)

或者,有很多替代方案......正如谷歌会告诉你的那样.

如果您只是想了解一般的类加载器,请阅读:什么是Java ClassLoader?