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

news2024/9/24 5:31:35

一、什么是反射?

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

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

获取是先从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.coloradmin.cn/o/400410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity之Addressable使用注意事项

基本设置 Profile文件中配置资源构建路径和资源首次加载路径,资源如何设置了缓存,在首次加载之后会将再用缓存在缓存目录,后面将直接从缓存目录中读取,RemoteLoadPath一般要设置成可以动态修改类型的参数,方便项目发包…

[oeasy]python0104_指示灯_显示_LED_辉光管_霓虹灯

编码进化 回忆上次内容 x86、arm、riscv等基础架构 都是二进制的包括各种数据、指令 但是我们接触到的东西 都是屏幕显示出来的字符 计算机 显示出来的 一个个具体的字型 计算机中用来展示的字型 究竟是 如何进化的 呢?🤔🤔 模拟电路时…

在线客服机器人是什么?有什么用处?

在线客服机器人是客服自动智能问答 真人模拟应答以及意向分类 高效低成本可以同时进行一对多服务,而在一些情况下,在线客服机器人还可以进行客户接待,完全代替人工客服,提高整个客服中心的接待量。在这里我们拿ttkefu在线机器人为…

Spring学习——Maven进阶

分模块开发与设计 创建模块 书写模块代码 通过maven指令安装模块到本地仓库(install指令) 在pom.xml中导入坐标执行maven的install命令将模块安装到本地maven仓库 团队内部开发可以发布模块功能到团队内部可共享的仓库中(私服) 依赖管理 依赖指当前项目运行所需…

JAVA SE:多线程

一、线程简介多任务,看似同时在做,实际上同一时间只做一件事多线程,相当于路上多加一条车道普通方法vs多线程: 程序、进程、线程:程序:静态的概念,程序和数据的有序集合进程:操作系统…

CleanMyMac X4.20最新Mac系统垃圾清理工具

CleanMyMac X是一款Mac系统垃圾清理工具,可以清除Mac系统多余的语言包、系统缓存、应用程序、PowerPc软件运行库等,是硬盘瘦身的好工具。在面对一款多功能型的软件时,复杂的操作面板是最容易让人头疼的,好在 CleanMyMac 一直以来都原生支持简体中文语言&…

python第五天作业~基础练习

目录 求十进制数字9的二进制编码: 求十进制数字9的二进制编码中的1的数量: 作业15:求1~100之间不能被3整除的数之和 作业16:给定一个正整数N,找出1到N(含)之间所有质数的总和 作业19:计算PI&…

为什么那么多人转行编程都首选Java

计算机专业通常从C语言开始学,非计算机专业想要转行编程首选Java的主要原因:市场需求量大。Java可以用于开发各种应用程序,包括企业级Web应用程序、移动应用程序、桌面应用程序、游戏、嵌入式系统、云基础设施等等。在游戏领域也有两大经典游…

Meta带头甩卖 VR头显打起价格战

新春三月,准备入手VR头显的“等等党”终于迎来降价利好。以Meta为首的一众VR厂商们纷纷打折,无论是为了清理库存、回收成本还是让步硬件新品,普通消费者都喜闻乐见。 上周五,Meta 率先官宣Meta Quest Pro与Meta Quest 2 的256GB版…

效率工具-快速创建虚拟机,Vagrant真香!

工欲善其事,必先利其器,开发环境和开发工具就是我们开发人员的剑,所以我们需要一个快并且好用的剑。本文是向大家介绍虚拟机创建vagrant,它能够实现开发人员本机快速创建虚拟机,能够带来高效学习各种技术价值。1 Vagra…

我的投稿之旅

一、铁道科学与工程学报选择这个期刊的原因是:感觉影响因子较低,而且实验室有师兄师姐中过这个期刊,所以抱着试一试的心态投了。投稿之前需要去官网注册账号由于方向不一致,被退稿了“您的稿件内容不属于本刊刊载范畴,…

Content-Type (MIME) el-upload文件、图片上传 | 文件改名 | 大文件 | 文件下载

MIME 为数据格式标签;最初 MIME 是用于电子邮件系统的,后来 HTTP 也采用了这一方案。 在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。 Content-Type:type/subtype ;parametertype 主类型,任…

【LeetCode每日一题】——135.分发糖果

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 贪心算法 二【题目难度】 困难 三【题目编号】 135.分发糖果 四【题目描述】 n 个孩子站成一…

【论文研读】无人机飞行模拟仿真平台设计

无人机飞行模拟仿真平台设计 摘要: 为提高飞行控制算法的研发效率,降低研发成本,基于数字孪生技术设计一个无人机硬件在环飞行模拟仿真平台。从几何、物理和行为3个方面研究无人机数字模型构建方法,将物理实体以数字化方式呈现。设计一种多元融合场景建模法,依据属…

Java--JMH--性能测试--测试软件运行效率/时间--StopWatch

写在前面: 很多时候想要测试代码运行时间,或者比较2个运行的效率。 最简单的方法就是Sytem.currentTimeMillis记录2开始和结束时间来算 但是Java 代码越执行越快,放在后面的方法会有优势,这个原因受留个眼,以后研究。大概有受类加…

RedisCluster集群模式下master宕机主从切换期间Lettuce连接Redis无法使用报错Redis command timed out的问题

背景springboot使用redisTemplate访问redis cluster(三主三从),底层是Lettuce,当其中一个master挂掉后,slave正常升为master,程序报错 Redis commond timed out after 6 seconds。解决手动连接集群&#xf…

【三维几何学习】网格上低分辨率的分割结果到高分辨率的投影与可视化

网格上低分辨率的分割结果到高分辨率的投影与可视化引言一、到高分辨率的投影1.1 准确率1.2 主要代码1.3 投影核心代码二、可视化代码引言 三角网格的结构特性决定了其仅用少量三角形即可表示一个完整的3D模型。增加其分辨率可以展示更多模型的形状细节。对于网格分割来说&…

可复用测试用例描述要素

测试用例的输入、操作、预期结果和评估标准、前提条件是测试用例不可少的要素,但对于可复用测试用例而言,这是不够的。本文在文献规定的测试用例要素基础上,增加了新的内容。从而从多个角度完整地对可复用测试用例进行了描述,为可…

从0开始学IntelliJ Plugin开发:一、配置环境

前言 作为一个javaer,相信大家平时开发都多多少少使用了一些idea的插件,那么在享受插件便利的同时,有没有好奇插件是如何开发的 笔者怀着这份好奇开始了idea插件开发学习之路,同时把学习的心得体会整理成系列文章作为学习笔记供…

探访人工智能领跑者:纷享销客携手30+TOP高科技企业走进旷视科技

拥有全球规模领先的计算机视觉研究院; 揽获28项世界顶级AI竞赛冠军; 世界级人工智能公司; 没错,它就是人工智能行业的务实者和领跑者,旷视科技。 3月3日,北京软件和信息服务业协会联合纷享销客,…