第二十三章 反射

第二十三章 反射

  • 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张图片

1.反射机制问题

第二十三章 反射_第2张图片
在这里插入图片描述
第二十三章 反射_第3张图片
第二十三章 反射_第4张图片
第二十三章 反射_第5张图片
第二十三章 反射_第6张图片
第二十三章 反射_第7张图片

2.反射快速入门

第二十三章 反射_第8张图片

假如Cat多了一个cry方法
第二十三章 反射_第9张图片

我们想要去调用这个方法,只有修改源码
第二十三章 反射_第10张图片
但现在我们不需要修改源码,修改配置文件即可
第二十三章 反射_第11张图片
我们的源码没有修改,但我们的功能已经发生了变化
在这里插入图片描述

3.发射原理图

第二十三章 反射_第12张图片
第二十三章 反射_第13张图片

4.反射相关类

第二十三章 反射_第14张图片
第二十三章 反射_第15张图片
第二十三章 反射_第16张图片
第二十三章 反射_第17张图片
第二十三章 反射_第18张图片
第二十三章 反射_第19张图片
第二十三章 反射_第20张图片

第二十三章 反射_第21张图片

5.发射调用优化

第二十三章 反射_第22张图片
第二十三章 反射_第23张图片
第二十三章 反射_第24张图片
第二十三章 反射_第25张图片
第二十三章 反射_第26张图片
第二十三章 反射_第27张图片
第二十三章 反射_第28张图片
第二十三章 反射_第29张图片
快了一点点
第二十三章 反射_第30张图片

6.Class类分析

第二十三章 反射_第31张图片
2.
第二十三章 反射_第32张图片
第二十三章 反射_第33张图片
3.
第二十三章 反射_第34张图片
第二十三章 反射_第35张图片
第二十三章 反射_第36张图片
第二十三章 反射_第37张图片

第二十三章 反射_第38张图片

6,7.
第二十三章 反射_第39张图片

7.Class常用方法

第二十三章 反射_第40张图片
第二十三章 反射_第41张图片
第二十三章 反射_第42张图片
第二十三章 反射_第43张图片
第二十三章 反射_第44张图片
第二十三章 反射_第45张图片
第二十三章 反射_第46张图片

8.获取Class对象的6种方式

第二十三章 反射_第47张图片
第二十三章 反射_第48张图片
第二十三章 反射_第49张图片
第二十三章 反射_第50张图片
第二十三章 反射_第51张图片
第二十三章 反射_第52张图片
第二十三章 反射_第53张图片
第二十三章 反射_第54张图片
第二十三章 反射_第55张图片
在这里插入图片描述

第二十三章 反射_第56张图片
第二十三章 反射_第57张图片
第二十三章 反射_第58张图片
第二十三章 反射_第59张图片

9.哪些类型有Class对象

第二十三章 反射_第60张图片
第二十三章 反射_第61张图片
第二十三章 反射_第62张图片
第二十三章 反射_第63张图片

10.动态和静态加载

第二十三章 反射_第64张图片
静态加载
这里不在idea中写,因为在idea中写马上就会报错了
第二十三章 反射_第65张图片
编译一下,报错
第二十三章 反射_第66张图片
这里我们的Dog类不一定会用到,但这里不管这么多,怎么在加载的时候就会报错,这里称为静态加载

动态加载
第二十三章 反射_第67张图片
第二十三章 反射_第68张图片
编译通过
在这里插入图片描述
这里确实生成了CLASS文件,说明编译通过
在这里插入图片描述

第二十三章 反射_第69张图片
第二十三章 反射_第70张图片
第二十三章 反射_第71张图片

11.类加载流程图

第二十三章 反射_第72张图片
第二十三章 反射_第73张图片

12.类加载五个阶段(1)

第二十三章 反射_第74张图片
第二十三章 反射_第75张图片
第二十三章 反射_第76张图片
在这里插入图片描述
第二十三章 反射_第77张图片

13.类加载五个阶段(2)

第二十三章 反射_第78张图片
第二十三章 反射_第79张图片
第二十三章 反射_第80张图片
第二十三章 反射_第81张图片

14.获取类结构信息(1)

第二十三章 反射_第82张图片
第二十三章 反射_第83张图片
第二十三章 反射_第84张图片
第二十三章 反射_第85张图片
第二十三章 反射_第86张图片
第二十三章 反射_第87张图片
第二十三章 反射_第88张图片
这里父类不局限于它的直接父类,它的父类的父类也可以
第二十三章 反射_第89张图片
第二十三章 反射_第90张图片
第二十三章 反射_第91张图片

在示例的类中添加构造器
第二十三章 反射_第92张图片
第二十三章 反射_第93张图片
第二十三章 反射_第94张图片
在这里插入图片描述
第二十三章 反射_第95张图片
在这里插入图片描述
第二十三章 反射_第96张图片
在这里插入图片描述
示例的类实现接口
第二十三章 反射_第97张图片
第二十三章 反射_第98张图片
在这里插入图片描述
在示例的类上加一个注解信息
第二十三章 反射_第99张图片
在这里插入图片描述
在这里插入图片描述

15.获取类结构信息(2)

第二十三章 反射_第100张图片
第二十三章 反射_第101张图片
第二十三章 反射_第102张图片
下面我们调整一下给出的类的示例
第二十三章 反射_第103张图片
第二十三章 反射_第104张图片
第二十三章 反射_第105张图片
第二十三章 反射_第106张图片
第二十三章 反射_第107张图片
第二十三章 反射_第108张图片
第二十三章 反射_第109张图片
将示例的类做出修改
第二十三章 反射_第110张图片
第二十三章 反射_第111张图片
第二十三章 反射_第112张图片
这m2,m3,m4都是无参的
第二十三章 反射_第113张图片
第二十三章 反射_第114张图片
第二十三章 反射_第115张图片
第二十三章 反射_第116张图片

16.反射爆破创建实例

第二十三章 反射_第117张图片
第二十三章 反射_第118张图片
在这里插入图片描述
第二十三章 反射_第119张图片
第二十三章 反射_第120张图片
在这里插入图片描述
第二十三章 反射_第121张图片
在这里插入图片描述
第二十三章 反射_第122张图片
这里会报错,getConstructor返回的是public构造器对象
第二十三章 反射_第123张图片

我们下面修改一下,getDeclaredConstructor可以得到所有的构造器对象
第二十三章 反射_第124张图片
这里还是会报错,一个非法的访问异常
第二十三章 反射_第125张图片
下面我们做一个修改
第二十三章 反射_第126张图片
第二十三章 反射_第127张图片

17.反射爆破操作属性

第二十三章 反射_第128张图片
第二十三章 反射_第129张图片
第二十三章 反射_第130张图片
第二十三章 反射_第131张图片
第二十三章 反射_第132张图片
第二十三章 反射_第133张图片
第二十三章 反射_第134张图片
注意:这里不能使用getField,因为name为private的
第二十三章 反射_第135张图片
这里还是会报错,非法的访问(这里的name为private)
第二十三章 反射_第136张图片
下面我们做一个修改
第二十三章 反射_第137张图片
第二十三章 反射_第138张图片
第二十三章 反射_第139张图片
这里用null也可以,因为name为static,而静态的name是属于所有对象的
注意:只有静态的属性才可以置空
第二十三章 反射_第140张图片
第二十三章 反射_第141张图片

18.放射爆破操作方法

第二十三章 反射_第142张图片
第二十三章 反射_第143张图片
第二十三章 反射_第144张图片
第二十三章 反射_第145张图片
第二十三章 反射_第146张图片
第二十三章 反射_第147张图片
第二十三章 反射_第148张图片
第二十三章 反射_第149张图片
第二十三章 反射_第150张图片

19.反射课后练习

第二十三章 反射_第151张图片
第二十三章 反射_第152张图片
第二十三章 反射_第153张图片
第二十三章 反射_第154张图片
第二十三章 反射_第155张图片
在这里插入图片描述
第二十三章 反射_第156张图片
在这里插入图片描述
创建成功
第二十三章 反射_第157张图片

你可能感兴趣的:(JAVA第二阶段2,java,开发语言)