美文网首页
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源码

    成员变量:两个ClassLoader对象defaultClassLoader、systemClassLoader构...

  • 2018-11-17 ClassLoaderWrapper

    ClassLoaderWrapper,Resources使用的,具体的用来加载资源的类 package org.a...

  • mybatis源码阅读笔记-卷二(基础知识)

    二.io包 2.1ClassLoaderWrapper 类加载器包装器内部含有两个属性:ClassLoader d...

  • 第二章 资源加载 ClassLoader

    简书 许乐转载请注明原创出处,谢谢! 一、ClassLoaderWrapper 类   在MyBatis的IO包中...

  • Resources源码

    成员变量:classLoaderWrapper、charset 只有一个无参数的构造函数成员方法: 先看这两个方法...

  • iOS-OC相关源码下载和OC代码转C++/汇编/LVVM

    目录 OC相关源码下载----objc源码----malloc源码----Runloop源码----GCD源码OC...

  • go run

    源码文件 Golang源码文件分为三种类型,分别是命令源码文件、库源码文件、测试源码文件 命令源码文件 命令源码文...

  • 文章目录汇总

    Java 源码 String源码-Java源码系列之StringInteger、Long源码-Java源码系列之I...

  • 小米便签产品级的源码

    小米便签产品级的源码 源码简介 小米便签Android源码,可以再桌面创建widget。 源码截图 源码下载 源码下载

  • 命令源码文件

    包是有源码文件组成,源码文件分为三种,库源码文件,命令源码文件,测试源码文件 命令源码文件 定义:命令源码文件是程...

网友评论

      本文标题:ClassLoaderWrapper源码

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