当前位置: 首页 > news >正文

【Java基础 下】 031 -- 反射 动态代理

一、什么是反射?

换句话说就是(从类里拿出来)

可以获取到:(利用反射,我们可以获取到类中所有的东西)

获取是先从class字节码文件中获取的

二、获取class对象的三种方式

三种方式也对应了三种阶段

1、Class.forName("全类名");

全类名 = 包名+类名

2、类名.class

3、对象.getClass();

4、代码实现

三种方式获取到的字节码文件对象其实是一样的

三、反射获取

1、利用反射获取构造方法

①、示例代码:

②、获取所有的构造方法:

③、获取单个构造方法:

④、获取方法权限修饰符:

⑤、获取参数个数、获取参数类型、获取所有参数:

⑥、获取私有:(暴力反射)

2、利用发射获取成员变量

①、获取class字节码文件的对象

②、获取所有公共成员变量

③、获取所有成员变量

④、获取单个的成员变量

⑤、获取权限修饰符

⑥、获取成员变量的名字

⑦、获取成员变量的数据类型

⑧、获取成员变量记录的值

⑨、修改对象里面记录的值

3、利用反射获取成员方法

①、获取class字节码文件对象

②、获取里面所有的公共方法对象

包含父类中所有的公共方法

③、获取里面所有的方法对象

④、获取单个的方法

⑤、获取方法的修饰符

⑥、获取方法的名字

⑦、获取方法的形参

⑧、获取方法的抛出的异常

⑨、方法运行

四、反射的作用

1、练习1:保存信息

示例代码:

完整代码:(创建IO流存入本地文件)

2、练习2:跟配置文件结合动态创建

示例代码:

(配置文件 prop.properties)

反射和配置文件结合,动态创建对象

3、小结

getClass()是定义在Object类中的,因此所有的对象都可以调用它

五、动态代理

1、什么是动态代理?

动态代理可以无侵入式的给代码增加额外的功能

2、程序为什么需要代理?代理长什么样?

①、示例代码

BigStar.java(JavaBean)

Star.java(接口)

3、小结

4、如何为Java对象创建一个代理对象?

①、newProxyInstance(1,2,3)

②、示例代码:(创建一个代理)

ProxyUtil.java

参数一:固定格式

参数二:指定数组,如果有多个接口,可以将多个接口都放入数组

参数三:匿名内部类

测试类:

JavaBean(BigStar)

③、小结

http://www.lryc.cn/news/36579.html

相关文章:

  • springcloud3 GateWay
  • 万字长文:Stable Diffusion 保姆级教程
  • WAMP搭建靶场
  • Uipath Excel 自动化系列13-ForEachExcelSheet(遍历Sheet)
  • JDBC快速入门
  • 蓝桥杯三月刷题 第六天
  • 分享几个常用的运维 shell 脚本
  • 分隔链表(精美图示详解哦)
  • 腾讯乐固加固+app签名+多渠道打包
  • Spring Boot整合Redis缓存(Lettuce)
  • Feign
  • 【代码训练营】day54 | 392.判断子序列 115.不同的子序列
  • 【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)
  • JAVA开发(JAVA中的异常)
  • lesson8-Linux多线程
  • python的django框架从入门到熟练【保姆式教学】第四篇
  • Codeforces Round 852 (Div. 2)
  • 【PTA Data Structures and Algorithms (English)】7-2 Reversing Linked List
  • Jetpack Compose 学习汇总
  • 【OpenCv】c++ 图像初级操作 | 图像灰度化
  • VIT(vision transformer)onnx模型解析
  • 红黑树的介绍和实现
  • C/C++每日一练(20230310)
  • Go语言基础知识
  • 案例06-没有复用思想的接口和sql--mybatis,spring
  • 如何将项目部署到服务器:从选择服务器到维护应用程序的全流程指南
  • 怎么做才能不丢消息?
  • 前端基础(十六)_数组对象
  • 数据结构-带头双向循环链表
  • 3 问 6 步,极狐GitLab 帮助企业构建高效、安全、合规的 DevSecOps 文化