Java类加载机制-创新互联

本篇文章主要用作学习结果记录,比较简单粗暴

成都创新互联公司长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为蚌山企业提供专业的成都网站设计、成都网站制作蚌山网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。准备工作

jdk中不包含sun包下的源码,需要自行下载

  1. 打开 https://github.com/openjdk-mirror/jdk.git
  2. 切换至 jdk8u/jdk8u/master 分支
  3. 下载压缩包至本地

打开idea -->File -->Project Structure -->SDKs -->右侧选择对应jdk版本 -->右侧选择 sourcepath -->添加刚才下载的源码,sun包就在 src\share\classes 目录下
在这里插入图片描述

自定义类加载器

ClassLoader作为负责装入类的对象,对类加载过程就进行了简单的描述,并且给出了一个网络类加载器示例。它建议我们自定义的类加载器继承ClassLoader,并重写findClass方法,在findClass方法中调用defineClass方法将组成类的字节数组转换为Class类示例。

按照建议,我定义了一个匿名内部类,实现了ClassLoader,该类仅仅提供了加载指定类文件的功能,文件路径是固定的绝对路径
在这里插入图片描述
测试

ClassdogClass = diskClassLoader.loadClass("com.bluescreen.Dog");
Object dogObj = dogClass.newInstance();
Method run = dogClass.getDeclaredMethod("run");
run.invoke(dogObj);
类加载过程

画个图吧,加载过程其实就是一层层向上委托,每个类加载器都有一个父类加载器,自定义的类加载器默认的parent是AppClassLoader。
在这里插入图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:Java类加载机制-创新互联
文章URL:http://hbruida.cn/article/dcdgid.html