本帖最后由 谢述华 于 2012-5-28 09:52 编辑
按图索骥。。。
1、找到openConnection()方法,如图需要handler。
2、找到URL中的handler实例。注:handler是抽象类URLStreamHandler一个定义了的未实例化类。
3、handler =(URLStreamHandler)cls.newInstance();。
4、cls = cl.loadClass(clsName);
①cl为系统类加载器
②claName是由前面的sun.security.action.GetPropertyAction等方法组成的。
5、找不到GetPropertyAction的源代码了,不过猜测clsName指向一个API,这个API至少应该覆盖
①、URLConnection的connect方法
②、URLStreamHandler的openConnection方法
注:handlers为handler储存集合,factory为自定义handler。(看到这部分的,可以再探讨下)
一路找来,挺有意思的,大家也可以尝试下,希望能够帮到你~~ |
组图打开中,请稍候......
|