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

【Java学习】反射

目录

反射类

一、泛型参数

二、反射类类型

三、实例化

1.实例化材料

2.结构信息可使用化

四、使用

1.Class —类完整结构信息

1.1Class<类>实例化

1.2Class<类>实例获取

1.2.1Class类静态获取:

1.2.2信息类静态获取

1.2.3信息类非静态获取

1.3信息类实例化

1.4分配导信息

2.Constructor —类构造器结构信息

1.4.1Constructor<类>实例获取

2.1信息类的实例化

3.Field—类成员变量结构信息

1.4.2Field实例获取

3.1修改

4.Method——类成员方法结构信息

1.4.3Method实例获取

4.1调用

5.私有信息的获取与使用(说明)

1.Declared获取

2.setAccessible设置


反射类

反射类是 类结构信息 反射获取并使用 泛型类

一、泛型参数

泛型类 将类里面的 类类型 作为参数类结构实现时 传具体的类类型,让泛型类里面的 类类型参数 模套地给上 对应具体有意义的类型,实现 类在结构上 用类类型实现的 泛型化

  • <>里传入 要反射获取结构信息的类,它的确定 使反射类的类型结构 确定下来

二、反射类类型

反射类类型 会对应不同的泛型类 不同的类结构,对应会反射出 类不同模块的 结构信息


三、实例化

1.实例化材料

反射类实例化需要 类的类型信息(这里是需要获取结构信息的 传的参数类 的类型,而反射类类型不需要,因为它是一直都提供 已知的)与类对应模块的结构信息


2.结构信息可使用化

反射类 对身上带的 导入模块结构信息已知类类型的 类 反射获取创建 对应的独立出来可使用的 类模块结构信息 存储放入 此对应类的 结构模块的反射类的 实例对象中有了实例对象,才可实现 对已获取到的类结构信息 进行使用


四、使用

1.Class<T>—类完整结构信息

1.1Class<类>实例化

每一个类运行时,在JVM上都获取有 类的完整结构信息,配合已知的 类的类型信息反射类Class<类>都会在JVM有且只有一个地 创建出 Class<类>的 存储有可使用类完整结构信息实例对象


1.2Class<类>实例获取
1.2.1Class类静态获取

Class.forName("类的全路径");

—> return Class<类>

调用反射类Class(未传入类类型的 最初始反射类Class<T>)里的静态方法 根据类的路径找到该类 得到它的类类型,再结合JVM上获取的该类结构信息 创建Class<类>反射类 的实例化对象

1.2.2信息类静态获取

类变量.class;

—> return Class<类>

调用此信息类里面的静态方法 获取该类对应的 Class<类>反射类的实例对象 

1.2.3信息类非静态获取

类实例对象.getClass();

—> return Class<类>

调用此信息类里面的非静态方法 获取该类对应的 Class<类>反射类的实例对象


1.3信息类实例化

class<类>.newInstance();

—> return 类的实例对象

有了Class<类>反射类的 实例对象,就可以使用 它身上带有的完整类结构的信息,就可以用它 创建信息类的实例对象


1.4分配导信息

有了Class<类>反射类的 实例对象,就可以分配 其它模块结构的信息 导给其它结构模块的反射类 就可以创建出 其它模块结构的 反射类实例对象进行对类其它结构信息的 使用与操作


2.Constructor<T>—类构造器结构信息

1.4.1Constructor<类>实例获取

class<类>.getDeclaredConstructor(形参类型字段);

—> return  Constructor<类>

反射类Class<类>实例对象 用它里面已有的 类的指定构造器的 模块结构信息导入 对应类类型的 反射类Constructor<类>中,Constructor<类>创建出 可使用操作里面存的 该类的 指定构造器结构信息的 实例化对象

2.1信息类的实例化

constructor<类>.newInstance(形参);

—> return 类的实例对象

反射类Constructor<类> 对应该类类型获取到 对应该类的 指定构造器模块结构信息创建出的实例对象constructor<类>,它使用里面 此类的构造器结构信息 进行实例化此类的实例对象


3.Field—类成员变量结构信息

1.4.2Field实例获取

class<类>.getDeclaredField("成员名");

—> return Field

反射类Class<类>的实例对象 用它里面已有的 类的指定成员变量的 模块结构信息导入 对应类类型的 反射类Field中,Field创建出 可使用操作里面存的 该类的 指定成员变量结构信息的 实例化对象

3.1修改

field.set(类的实例对象,成员变量参数);

—> return void

反射类Field 对应该类类型获取到 对应类的 指定成员变量模块结构信息创建出的实例对象field,它使用里面 该类的该成员变量的结构信息 对该类的实例对象的该成员变量 进行赋值修改


4.Method——类成员方法结构信息

1.4.3Method实例获取

class<类>.getDeclaredMethod("方法名",形参类型字段);

—> return Method

反射类Class<类>的实例对象 用它里面已有的 类的指定方法的 模块结构信息导入 对应类类型的 反射类Method中,Method创建出 可使用操作里面存的 该类的指定方法结构信息的 实例化对象

4.1调用

method.invoke(类的实例对象,方法参数);

—> return void

反射类Method 对应该类类型获取到 对应该类的 指定方法模块结构信息创建出的实例对象method,它使用里面 该类的该方法的结构信息 对该类的实例对象 进行方法的调用


5.私有信息的获取与使用(说明)

1.Declared获取

class<类>.getDeclared**(**);

—> return 局部模块结构的反射类实例

Class<类>实例 在私有模块结构信息类 的类外 将它里面存的 此模块结构信息 共有地全部导入 对应类的模块反射类上 来创建 模块反射类实例

2.setAccessible设置

局部模块结构的反射类实例.setAccessible(true);

—> return void

将此反射类实例 获得到的类模块结构信息 全部设置成共有化,之后就可 在私有模块结构信息类 的类外 全部公有化地使用它们了

相关文章:

  • 了解一下OceanBase中的表分区
  • JVM堆的分代机制
  • 云计算与大数据进阶 | 21、可扩展系统构建
  • 谷歌在即将举行的I/O大会之前,意外泄露了其全新设计语言“Material 3 Expressive”的细节
  • 【测试开发】概念篇 - 从理解需求到认识常见开发、测试模型
  • 国标GB28181视频平台EasyCVR安防系统部署知识:如何解决异地监控集中管理和组网问题
  • Copilot for PPT 可直接用模板创建品牌演示文稿
  • css媒体查询及css变量
  • Linux USB Gadget | 框架 / 复合设备实践 / Configfs 配置
  • 概统期末复习--速成
  • Desfire Ev1\Ev2\Ev3卡DES\3K3DES\AES加解密读写VB.Net示例源码
  • 在与大语言模型交互中的礼貌现象:技术影响、社会行为与文化意义的多维度探讨
  • 第六节:图像基本操作-像素级操作
  • 【Quest开发】接入语音转文字
  • C 语言比较运算符:程序如何做出“判断”?
  • 售前赢单评分是越权吗?
  • C++ 中二级指针的正确释放方法
  • Kubernetes排错(九)-节点排错
  • 智能体四项关键技术:MCP、A2A、ANP与函数调用的深度解析
  • 虚拟dom是什么,他有什么好处
  • 文旅部:加强对景区索道、游船等设施设备安全隐患排查整治
  • 云南省司法厅党委书记、厅长茶忠旺主动投案,正接受审查调查
  • 青岛双星名人集团董事长发公开信称家人逼迫交出管理权?公司回应
  • 罗马尼亚临时总统博洛让任命普雷多尤为看守政府总理
  • 多地晒五一假期前两日成绩单,湖南单日客流同比增长逾三成
  • “五一”第三天郑州铁路局预计发送旅客76万人