首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于类的依赖类加载有关问题?望请问

2012-10-26 
关于类的依赖类加载问题?望请教.如题, 比如类A, 有一成员类B, 此时用类加载器加载A后, B也是A类的加载器加

关于类的依赖类加载问题?望请教.
如题, 比如类A, 有一成员类B, 此时用类加载器加载A后, B也是A类的加载器加载的.
请问, 怎么实现, 让成员B的类加载器是其他类加载器, 或者是父类加载器.

是不是必须使用线程上下文加载器, 才能实现?因为可以不需要委托? 1 楼 galaxystar 2007-10-10   以前做了个测试:
类A是非系统类加载器加载的类(即自定义的类加载器, 不使用委派), 它有一个成员变量类B, 类A被加载后, 发现这个类B竟然不是A的类加载器加载的.

感觉这个跟Class.forName, 使用当前被调用的类的类加载器有点区别.
2 楼 slangmgh 2007-10-10   A应用B,你们B的Class会有A的ClassLoader来执行loadClass,但是最终B的ClassLoader不一定是A的ClassLoader,其结果依赖于A的ClassLoader的实现。

一般情况下ClassLoader会首先检查类是否已经在本ClassLoader中加载,如果没有,就从parent ClassLoader中加载,否则根据自己的策略进行加载。

但是ClassLoader的实现也可以完全不按照上面的方法。 3 楼 kenwu 2007-10-10   slangmgh 写道A应用B,你们B的Class会有A的ClassLoader来执行loadClass,但是最终B的ClassLoader不一定是A的ClassLoader,其结果依赖于A的ClassLoader的实现。

一般情况下ClassLoader会首先检查类是否已经在本ClassLoader中加载,如果没有,就从parent ClassLoader中加载,否则根据自己的策略进行加载。

但是ClassLoader的实现也可以完全不按照上面的方法。

那可不可以说, 类B的加载, 一定是调用的loadClass()方法?

如果不是, 那它怎么知道用哪个方法可以加载类? 4 楼 slangmgh 2007-10-11   kenwu 写道
那可不可以说, 类B的加载, 一定是调用的loadClass()方法?

如果不是, 那它怎么知道用哪个方法可以加载类?

是的。如果是第一次,一定会调用类A的ClassLoader的loadClass。你可以自己写一个ClassLoader测试一下就知道了。

热点排行