发布于2020-12-23 21:30 阅读(789) 评论(0) 点赞(10) 收藏(1)
上图中箭头并不代表继承关系,是上下层关系
又叫引导类加载器(bootstrap classloader)
又成为应用程序类加载器
开发者自己提供的加载器,通过继承java.lang.ClassLoader来自定义类加载器:JDK1.2远古时期,继承ClassLoader之后重写loadClass()方法,JDK1.2之后建议开发者把自定义类加载的逻辑代码重写在findClass()方法中(这个方法需要开发者自己读取字节码文件,加密的字节码文件就可以在这里解密并加载)。如果没有很特别的需求,可以直接继承URLClassLoader,这样可以省略编写findClass()方法以及其获取字节码文件流的过程。
什么情况下需要自定义加载器
- package com.leolee.multithreadProgramming;
-
-
- import lombok.extern.slf4j.Slf4j;
- import sun.misc.Launcher;
-
- import java.net.URL;
-
- /**
- * @ClassName Test
- * @Description: TODO
- * @Author LeoLee
- * @Date 2020/12/1
- * @Version V1.0
- **/
- @Slf4j
- public class Test {
-
- public static void main(String[] args) throws InterruptedException {
-
- //系统类加载器
- ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
- System.out.println(systemClassLoader);
-
- //拓展类加载器
- ClassLoader extClassLoader = systemClassLoader.getParent();
- System.out.println(extClassLoader);
-
- //启动类加载器
- ClassLoader bootstrapClassLoader = extClassLoader.getParent();
- System.out.println(bootstrapClassLoader);
-
- //用户定义类默认使用系统类加载器
- ClassLoader classLoader = Test.class.getClassLoader();
- System.out.println(classLoader);
-
- //Java的核心类库都是使用引导类加载器加载的
- ClassLoader classLoader1 = String.class.getClassLoader();
- System.out.println(classLoader1);
-
- //启动类加载器加载的类库的路径
- //这些路径下的类,获取其加载器的时候都是null
- URL[] urLs = Launcher.getBootstrapClassPath().getURLs();
- for (URL url : urLs) {
- System.out.println(url.toExternalForm());
- }
-
- //拓展类加载器加载类库的路径
- String property = System.getProperty("java.ext.dirs");
- for (String path : property.split(";")) {
- System.out.println(path);
- }
-
- System.out.println(Thread.currentThread().getContextClassLoader());
- }
- }
获取ClassLoader的方法:
原文链接:https://blog.csdn.net/qq_25805331/article/details/111537865
作者:天使之恋
链接:http://www.javaheidong.com/blog/article/38224/1a518a05f691a1e9700a/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!