美文网首页
ClassLoaderWrapper源码

ClassLoaderWrapper源码

作者: ywy_java | 来源:发表于2017-03-07 14:52 被阅读0次

    成员变量:两个ClassLoader对象defaultClassLoader、systemClassLoader
    构造方法:


    构造方法.png

    成员方法:


    function.png
    主要看蓝色小三角的四个方法,其他方法都是对该是个方法的调用。(这里是不是有什么设计思想?屏蔽实现细节?提供更易使用的方法?)
    首先应该分析的是getClassLoaders这个方法,因为其他方法有对它的调用。
    Paste_Image.png

    看起来还是很简单的,就是直接返回了一个ClassLoader数组,分别装入:
    1、传入进来的ClassLoader对象
    2、defaultClassLoader
    3、当前线程的类加载器(说是每个类运行都是通过线程运行的,都会有个类加载器)
    4、当前类的类加载器(肯定是有的,不然类怎么能加载到JVM里)
    5、systemClassLoader。(看下上面的构造方法就知道,这个类初始时只对systemClassLoader进行了赋值,可以看看这个获得过程,api文档说系统类加载器是在JVM启动的时候就有了)
    有了这个方法的底子之后,我们来看看下面这个方法

    获取路径下的文件流.png

    都是调用getResourceAsStream方法,注意传入的第二个参数,调用的是我们刚刚看的方法。

    getResourceAsStream.png

    这个应该算是这个类的正餐了,这是它的主要功能之一。它的实现写的很简单,循环能拿到的所有类加载器,通过类加载器及传入的路径获取文件流。这里看到,传入的路径最前面有没有“/”都不影响。
    另外一个方法也是类似的

    getResourceAsURL.png

    这里的注释有亮点。。。
    还有最后一个方法


    classForName.png

    循环加载器,查找对应名称的类,把它加载进来。

    相关文章

      网友评论

          本文标题:ClassLoaderWrapper源码

          本文链接:https://www.haomeiwen.com/subject/hysmgttx.html