[Java]类加载与反射

前言
今天呢介绍下类加载与反射,下面会说一下方面的内容,类的加载连接初始化,以及反射相关的内容.
内容

总括

在这里插入图片描述
关于类加载这部分.在平时的做项目的过程中是基本上不会涉及到的,但是其中的原理却是清楚的知道的.根据书上的讲解以及自己的总结,大致总括如图,希望有助于大家的理解.

类的初始化

简而言之,什么是类的初始化,就是在类第一次使用的时候进行的准备以及预加载

使用场景

1.创建类实例
2.调用静态方法
3.访问静态属性,赋值静态属性
4.final修饰的静态属性
5.直接使用java.exe
6.子类初始化,父类也必须初始化

步骤

1.加载
2.连接
3.初始化静态方法
在这里插入图片描述

类加载

三种机制

1.全盘负责。所谓全盘负责,就是当一个类加载器负责加载某个Class时,该Class所依赖的和引用的其它Class也将由该类加载器负责载入,除非显式使用了另一个类加载器来载入。
2.父类委托。先让parent(父)类加载器试图加载该Class,只哟偶在父类加载器无法加载该类时才常识从自己的类路径中加载该类
3.缓存机制。缓存机制将会保证所有加载过的Class都会被缓存,当程序需要使用某个Class时,类加载器先从缓冲区搜索该CLass,只有当缓存区中不存在该Class对象,系统才会读取带类对应的二进制数据,并将其转换成Class对象,存入缓冲区。(这就是为什么修改Class后,必须重新启动JVM,程序所做的修改才会生效的原因

classloader自定义类加载

一、 方法

1.使用loadclass 还需要通过findclass来进行检查类是否加载,如果有父类需要使用根加载器
2.使用findclass 不需要其他步骤
3.利用findclass进行重写 会比较方便
总结:使用findclass会避免默认类的加载器的父类委托,缓冲机制两种策略,重写LoadClass逻辑会复杂.

二、 使用场景

1.反编译代码
2.动态加载类
3.加载字节码数据
4.提交代码前自动验证数字签名

URLClassLoader

反射

AOP

小结
感谢您的阅读~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值