类加载器、双亲委派模式--java进阶day18

1.类加载器

类加载器的加载时机:用到的时候就进行加载

2.类加载器的加载过程

[1]加载

先通过包名加类名找到要加载的类

通过流对象将其加载到方法区中

接着对加载好的类创建class对象,方便后续使用

[2]链接

分为三个流程

解析是将原本只是作为一种符号展示的类改变为可真实使用的类

如图,当我们没创建B类时,C类只是一种符号用于展示,而创建B类后,C类变为可真实使用的类


[3]初始化

就是将之前链接中“准备”的静态变量进行赋值


类加载器过程总结

3.类加载器分类

1.Bootstrap class loader

该类加载器用于加载JDK自带的类,比如:String、Integer、Double等等

2.Platform class loader

加载JDK中特殊的类,了解即可

3.Application class loader

4.自定义加载器

这些类加载器有上下级之分,Bootstrap class loader为最高级,按照顺序依次向下等级递减


4.getClassLoader()

通过该方法可以获取类的类加载器

分别获取String和自己写的类的类加载器

5.双亲委派模式

这里说的子父类就是上下级,并不是继承的子父类关系

双亲委派模式简单流程

1.无论加载哪一个类,都是由最底层的系统类加载器先接到加载请求

2.然后再把请求不断地委托给上级,直到委托给最顶层的启动类加载器

3.接着,启动类加载器再看该类是否属于自己加载,属于就加载,不属于就委托给下一级,以此类推

完整流程:https://kdocs.cn/l/cjbXnWCkUx21?linkname=150998231

6.ClassLoader的常用成员方法

[1]getSystemClassLoader

通过该方法获取到系统类加载器,即Application......

[2]getResourceAsStream(String name)

通过系统类加载器调用该方法加载配置文件

我们加载文件写的都是绝对路径,但是使用系统类加载器调用方法加载文件只需写配置文件的名称

系统类加载器从src里加载我们写的类,而配置文件也在src里

所以只需要写文件名称,系统类加载器就可以帮我们找到配置文件

配合Properties集合使用

posted @ 2025-05-25 13:28  直実  阅读(7)  评论(0)    收藏  举报