摘要
java的类装载器是java动态性的核心,本文将向大家简要介绍java的类装载器,及相关的parent delegation模型,命名空间,运行时包等概念,同时讨论一些在学习中轻易混淆的问题。
类装载器的功能及分类
顾名思义,类装载器是用来把类(class)装载进jvm的。jvm规范定义了两种类型的类装载器:启动类装载器(bootstrap)和用户自定义装载器(user-defined class loader)。
bootstrap是jvm自带的类装载器,用来装载核心类库,如java.lang.*等。如java.lang.object是由bootstrap装载的。
java提供了抽象类classloader,所有用户自定义类装载器都实例化自classloader的子类。 system class loader是一个非凡的用户自定义类装载器,由jvm的实现者提供,在编程者不非凡指定装载器的情况下默认装载用户类。系统类装载器可以通过classloader.getsystemclassloader() 方法得到。
例1,测试你所使用的jvm的classloader
/*loadersample1.java*/
public class loadersample1 {
public static void main(string[] args) {
class c;
classloader cl; cl = classloader.getsystemclassloader();
system.out.println(cl); while (cl != null) {
cl = cl.getparent();
system.out.println(cl);
}
try {
c = class.forname(java.lang.object);
cl = c.getclassloader();
system.out.println(java.lang.object's loader is + cl);
c = class.forname(loadersample1);
cl = c.getclassloader();
system.out.println(loadersample1's loader is + cl);
} catch (exception e) {
e.printstacktrace();
}
}
}
以上就是java的类装载器和命名空间的内容。