第二十三章 反射
- 1.反射机制问题
- 2.反射快速入门
- 3.发射原理图
- 4.反射相关类
- 5.发射调用优化
- 6.Class类分析
- 7.Class常用方法
- 8.获取Class对象的6种方式
- 9.哪些类型有Class对象
- 10.动态和静态加载
- 11.类加载流程图
- 12.类加载五个阶段(1)
- 13.类加载五个阶段(2)
- 14.获取类结构信息(1)
- 15.获取类结构信息(2)
- 16.反射爆破创建实例
- 17.反射爆破操作属性
- 18.放射爆破操作方法
- 19.反射课后练习
1.反射机制问题
2.反射快速入门
假如Cat多了一个cry方法
我们想要去调用这个方法,只有修改源码
但现在我们不需要修改源码,修改配置文件即可
我们的源码没有修改,但我们的功能已经发生了变化
3.发射原理图
4.反射相关类
5.发射调用优化
快了一点点
6.Class类分析
2.
3.
6,7.
7.Class常用方法
8.获取Class对象的6种方式
9.哪些类型有Class对象
10.动态和静态加载
静态加载
这里不在idea中写,因为在idea中写马上就会报错了
编译一下,报错
这里我们的Dog类不一定会用到,但这里不管这么多,怎么在加载的时候就会报错,这里称为静态加载
动态加载
编译通过
这里确实生成了CLASS文件,说明编译通过
11.类加载流程图
12.类加载五个阶段(1)
13.类加载五个阶段(2)
14.获取类结构信息(1)
这里父类不局限于它的直接父类,它的父类的父类也可以
在示例的类中添加构造器
示例的类实现接口
在示例的类上加一个注解信息
15.获取类结构信息(2)
下面我们调整一下给出的类的示例
将示例的类做出修改
这m2,m3,m4都是无参的
16.反射爆破创建实例
这里会报错,getConstructor返回的是public构造器对象
我们下面修改一下,getDeclaredConstructor可以得到所有的构造器对象
这里还是会报错,一个非法的访问异常
下面我们做一个修改
17.反射爆破操作属性
注意:这里不能使用getField,因为name为private的
这里还是会报错,非法的访问(这里的name为private)
下面我们做一个修改
这里用null也可以,因为name为static,而静态的name是属于所有对象的
注意:只有静态的属性才可以置空
18.放射爆破操作方法
19.反射课后练习
创建成功