zoukankan      html  css  js  c++  java
  • ClassLoader详解

    阅读源码过程中发现了一些ClassLoader的影子,以前经常用它来加载资源(就是读配置文件),但是没有详细的看过它,这次详细了解一下。

    ClassLoader详解

    ClassLoader是什么

    一句话总结:加载文件的类(哈哈,废话了)。

    ClassLoader能干什么

    返回stream,URl,加载定义注册class。

    ClassLoader的分类

    启动类加载器(Bootstrap ClassLoader):

                这个类加载的是核心的类库,及JDK本身的代码,是无法被调用的。

                (ClassLoader接口中有一个方法getBootstrapResources,看名字应该是可以加载修改后JDK代码的,有兴趣的同学可以试试)

    扩展类加载器(Extendsion ClassLoader):

                这个类加载的是加载libext目录下的类库,开发者可以使用。

    应用程序类加载器(Application ClassLoader):

                这个类加载的是CLASSPATH的类库,开发者可以使用。

    三个类的关系:启动类加载器----(父子)---->扩展类加载器----(父子)---->应用程序类加载器

    ClassLoader怎么使用

    这三个类只能看到使用,不能new出来。下面通过自己的class来使用它

    public class Test {
            public static void main(String[] args) throws Exception {
                     ClassLoader cl = Test.class.getClassLoader();
                     System.out.println(cl);
                     System.out.println(cl.getParent());
                     System.out.println(cl.getParent().getParent());
           }
    }

    ClassLoader运行详解

        classLoader进行加载Class的时候,首先判断一下父类是不是为空,如果不为空,则使用父类的方法进行加载。

           这样做的目的也容易理解,如果哪一天解析class的方式变化了,只需要将父类的方法修改一下就好了,子类什么都不要做。

           这种方法也叫双亲委派(设计模式之一)。

    这片文章其实只是做一个科普,只需要知道classloader是干什么的就行。

    个人理解:编程就像是说话一样,大家把话说好,理解方言就行。至于声音是发出来的,只需要知道是由声带震动的就行,具体的细节交给医生吧。

    参考文章:https://www.jianshu.com/p/554c138ca0f5

     
  • 相关阅读:
    C#使用RSA私钥加密公钥解密的改进,解决特定情况下解密后出现乱码的问题
    安装阿里旺旺2008会导致IE Webcontrols在客户端显示不正常
    Windows7的KB2488113补丁很重要,解决Windows7下软件无响应的问题
    使用csExWB Webbrowser 控件获取HttpOnly的cookie
    CacheControl:nocache 会导致ie浏览器无法保存正确的图片类型
    C#版 分页导航条
    dx ASPxGridView的增,删,改,查,数据绑定,外观显示,功能设定,分页
    js 简易评分控件
    js 密码强弱的实现
    js 动态添加事件
  • 原文地址:https://www.cnblogs.com/wuxiaolong4/p/11368745.html
Copyright © 2011-2022 走看看