jvm装在一个子类型并递归装载父类型是同一个类装载器装载么?

all_wmh 2011-07-01
假设要装载类型A,A的继承结构( -> 代表 extends)
A -> B -> C -> java.lang.Object

前提条件:
1.当前装载器是L,A,B,C,D还没被任何类装载器装载
2.类型A的定义类装载器是 La
3.类型B的定义类装载器是 Lb
4.类型C的定义类装载器是 Lc
5.类型java.lang.Object的定义类装载器是启动类装载器

那么我想问下这个时候
La是B,C,java.lang.Object的初始类装载器么?
all_wmh 2011-07-01
PS:
书上看到的是
1、当解析一个指向CONSTANT_Class_info的符号引用的时候,会用当前类装载器去装载CONSTANT_Class_info指向CONSTANT_String_info的全限定名的类型。
2、当递归解析子类型的超类或者超接口的时候,会用装载子类型的类装载器去解析超类或者超接口。

感觉挺矛盾的,谁能帮忙解答下么?
RednaxelaFX 2011-07-01
all_wmh 写道
La是B,C,java.lang.Object的初始类装载器么?

嗯,如果能成功加载的话,La会是这组B和C和java.lang.Object的initiating class loader
一个类的initiating class loader可以有任意多个,只要在同一条loadClass的链上;当然,其中不包括未能成功加载的那些class loader了。
all_wmh 2011-07-01
谢谢 撒迦
Global site tag (gtag.js) - Google Analytics