Java反射专题——基础知识一

news2024/9/29 17:37:06

反射

反射机制

java Reflection

  1. 反射机制允许程序在执行期借助于Reflection Api取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到。
  2. 加载完类之后,在堆中就产生一个Class类型的对象(一个类只有一个Class对象),这个对象得到类的结构。这个Class对象就像一面镜子,透过这面镜子看到类的结构,所以称之为:反射。

Java反射机制原理示意图

原理示意图

Java反射机制可以完成

  1. 在运行时判断任意一个对象所属的类。
  2. 在运行时构造任意一个类的对象。
  3. 在运行时得到任意一个类所具有的成员变量和方法。
  4. 在运行时调用任意一个对象的成员变量和方法。
  5. 生成动态代理。

反射相关的主要类

  1. java.lang.Class:代表一个类,Class对象表示某个类加载后在堆中的对象。
  2. java.lang.reflect.Method:代表类的方法,Method对象表示某个类的方法。
  3. java.lang.reflect.Field:代表类的成员变量,Field对象表示某个类的成员变量。
  4. java.lang.reflect.Constructor:代表类的构造方法,Constructor对象表示构造器。

反射的优缺点

  1. 优点:可以动态的创建和使用对象(也是框架底层核心),使用灵活,没有反射机制,框架技术就失去底层支撑。
  2. 缺点:使用反射基本是解释执行,对执行速度有影响。

优化

  1. Method和Constructor、Field对象都有setAccessible()方法。
  2. swtAccessible作用是启动和禁止访问安全检查的开关。
  3. 参数为true时表示反射的对象在使用时取消访问,提高反射的效率。参数值为false则表示反射的对象执行访问检查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128855.html

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

相关文章

我眼中的代理模式

一.什么是代理模式? 举个简单的例子就是比如你相亲的女孩想跟你要个10W彩礼,但是她不好意思直接跟你说啊。这时候就媒婆就说我去跟小伙子说。有什么回应我告诉你。然后媒婆就先夸女方怎么怎么优秀,然后落到中心思想要钱。这里面相亲的女孩子就…

PL点亮LED灯

PL点亮LED灯 LED硬件 开发板在PL端给了一个LED灯,电压给低的时候才导通,才亮。然后需要看原理图确定具体是用的PL的哪个管脚以便进行控制。 Vivado 工程创建 打开创建新工程选择工程名和工程目录(不能有中文路径,也不能太长&…

什么品牌的蓝牙耳机音质最好?高品质蓝牙耳机排行榜

近年来,大量的蓝牙耳机品牌厂商涌入市场,蓝牙耳机的需求不断提高,但质量一直是人们担心的问题,今天就为大家盘点几款当前音质表现不错的真无线蓝牙耳机。 一、南卡小音舱蓝牙耳机 发声单元:13.3mm 网友推荐系数&…

hex文件格式剖析,以及hex与bin文件互相转换

大家好,我是学电子的小白白。 熟悉单片机开发的朋友,应该经常见到*.hex后缀的文件,它是单片机和嵌入式工程编译输出的一种常见的目标文件格式(比如keil就能编译输出hex文件),通过烧写工具把它下载到单片机…

【SpringBoot项目实战】图片压缩包上传、解压、存储等等一套流程教学

【SpringBoot项目实战】图片压缩包上传、解压、存储等等一套流程教学前言一、压缩包上传1、接口实现2、获取压缩包的文件名和文件路径二、压缩包解压并保存1、处理压缩包文件方法解压缩步骤:2、接口中实现处理压缩包三、总结前言 之前一直用的zip4j来对压缩包进行操…

开源项目推荐 | 中科院自动化所历时9年打造的类脑认知智能引擎“智脉”正式开源部署至OpenI启智社区

​人脑能够自组织地协同数百项认知功能,灵活适应复杂多变的环境。如何整合多尺度生物可塑性法则来构建具有生物合理性和计算高效性的神经网络模型是类脑人工智能和计算神经科学领域共同关注和面临的重要挑战。 中国科学院自动化研究所类脑认知智能研究组历时9年&am…

通关算法题之 ⌈动态规划⌋

动态规划 动态规划是什么?解决动态规划问题有什么技巧?如何学习动态规划? 首先,动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如说让你求…

蓝桥杯寒假集训第二天(分巧克力)

没有白走的路,每一步都算数🎈🎈🎈 题目描述: 有很多的巧克力块,需要设计一个程序,让手艺师傅切出来的巧克力既满足切出来的巧克力的份数达到客户要求的份数,并且切出来的巧克力块尽…

硬盘图片丢失怎么办?看看这常见的三种恢复方法

电脑硬盘能够帮助我们存储各种各样的数据,比如图片数据,而随着这些充满回忆的图片积累的越来越多,难免会手误删除或其他原因导致丢失,那么对于电脑硬盘上丢失的图片如何恢复呢?在这里你可以了解到硬盘图片丢失常见原因…

python—subprocess模块常用方法介绍

目录 subprocess.run() subprocess.Popen() subprocess.call() subprocess.check_call() subprocess.getstatusoutput() subprocess.getoutput() subprocess.check_output() subprocess是子流程,即进程的意思,该模块可以启动一个新进程&#xff0…

印度电线标准IS 694(R2020),印度插头标准IS 1293(R2020)

印度电线标准IS 694(R2020) https://download.csdn.net/download/std86021/87328675POLYVINYLCHLORIDEINSULATEDUNSHEATHEDANDSHEATH更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/std86021/87328675 补丁一:IS694Amd…

已获1000 万美元战略融资,Web3链游#Delysium 有何魔力?

这周社区推文关注了AIGC在游戏领域中的创新应用,在Web3领域中,有哪些值得关注的链游项目呢?Mixlab小杜AIGC 与游戏机制创新玩法结合已成为潮流趋势,如游戏内容资产生成、智能NPC设计与自定义游戏玩法等都有非常大的探索空间。Web3…

【ACWING】【BFS】【844走迷宫】【845八数码】

一、走迷宫 给定一个 nm的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0表示可以走的路,1 表示不可通过的墙壁。 最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、下、左、右任意一…

CVE复现1

1 CVE-2022-22980 spring Data MongoDB SpEL 表达式注入,Spring Data MongoDB应用程序在对包含查询参数占位符的SpEL表达式使用Query或Aggregation注解的查询方法进行值绑定时,如果输入未被过滤,则容易受到SpEL注入攻击。 影响范围 Spring Data Mongo…

190:vue+openlayers 调整卫星运动的播放速度,展示运动轨迹

第190个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers项目中利用两行根数计算卫星在某一时刻的位置点,利用时间循环,定位出不同的位置,呈现动画的效果。文中利用slider的改变来确定当前时间为开始时间,slider的值为加速倍数,每个setTimeout为10毫秒,更新…

【博客系统】前端页面

博客系统 实现一个简单的博客系统。 当前先完成页面设计部分,通过学习的前端知识来构建出网页。 主要分成四个部分: 博客列表页博客正文页博客登陆页博客编辑页 预期效果 博客列表页效果 博客详情页效果 博客登陆页效果 博客编辑页效果 实现博客列…

C++数据结构--跳表的思想--手把手教你实现跳表--0721

1、 跳表--skiplist skiplist本质上是一种查找结构,跟平衡搜索树和哈希表的价值是一样的。跳表首先是一个链表,它是在链表的基础上发展的。但一般的链表进行查找数据只能全部遍历,时间复杂度为O(n)。 William Pugh的优化: 假如每…

Kafka一次线上问题

线上问题: Kafka: 客户说Broker不时会发生些错误日志,也看到topic的tps下降很快很明显, 日志看是ISR在不断的伸缩, 监控发现发生问题时的CPU、IO、磁盘都没有瓶颈 再查看堆栈信息:可看到关键信息: 有锁…

R语言raster包批量读取单一或大量栅格图像

本文介绍基于R语言中的raster包,读取单张或批量读取多张栅格图像,并对栅格图像数据加以基本处理的方法。 1 包的安装与导入 首先,我们需要配置好对应的R语言包;前面也提到,我们这里选择基于raster包来实现栅格图像数据…

TestStand-单执行界面

文章目录用户界面运行流程例程创建前面板设置用户界面主窗口前面板控件配置用户事件用户界面运行流程 用户界面设计的基本元素:管理控件、可视化控件、连接、应用程序启动及关闭、注册事件、处理事件。 LabVIEW中通过Regesiter Event Callback注册事件。 LabVIEW-Te…