1.类加载器
![]()
类加载器的加载时机:用到的时候就进行加载
![]()
2.类加载器的加载过程
![]()
[1]加载
先通过包名加类名找到要加载的类
通过流对象将其加载到方法区中
![]()
接着对加载好的类创建class对象,方便后续使用
![]()
[2]链接
分为三个流程
![]()
解析是将原本只是作为一种符号展示的类改变为可真实使用的类
如图,当我们没创建B类时,C类只是一种符号用于展示,而创建B类后,C类变为可真实使用的类
![]()
![]()
[3]初始化
就是将之前链接中“准备”的静态变量进行赋值
![]()
![]()
类加载器过程总结
![]()
3.类加载器分类
1.Bootstrap class loader
该类加载器用于加载JDK自带的类,比如:String、Integer、Double等等
![]()
加载JDK中特殊的类,了解即可
![]()
3.Application class loader
![]()
4.自定义加载器
![]()
这些类加载器有上下级之分,Bootstrap class loader为最高级,按照顺序依次向下等级递减
4.getClassLoader()
通过该方法可以获取类的类加载器
![]()
分别获取String和自己写的类的类加载器
![]()
5.双亲委派模式
这里说的子父类就是上下级,并不是继承的子父类关系
![]()
双亲委派模式简单流程
1.无论加载哪一个类,都是由最底层的系统类加载器先接到加载请求
2.然后再把请求不断地委托给上级,直到委托给最顶层的启动类加载器
3.接着,启动类加载器再看该类是否属于自己加载,属于就加载,不属于就委托给下一级,以此类推
![]()
![]()
6.ClassLoader的常用成员方法
[1]getSystemClassLoader
通过该方法获取到系统类加载器,即Application......
![]()
[2]getResourceAsStream(String name)
通过系统类加载器调用该方法加载配置文件
![]()
我们加载文件写的都是绝对路径,但是使用系统类加载器调用方法加载文件只需写配置文件的名称
![]()
系统类加载器从src里加载我们写的类,而配置文件也在src里
所以只需要写文件名称,系统类加载器就可以帮我们找到配置文件
![]()
配合Properties集合使用
![]()
posted @
2025-05-25 13:28
直実
阅读(
7)
评论()
收藏
举报