当前位置:网站首页>反射机制
反射机制
2022-08-03 20:47:00 【昭昭..】
反射的定义
什么是反射:
反射是java提供的一套动态执行的API。也就是说是在运行状态中,对于任意一类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能成为java语言的反射机制
Class属性的获取
Class对象: 是反射的入口,加载类到内存。获取class对象的三种方式
方式一、(知道包名+ 类名)动态获取
class.forname(“”);获取结果:
包名+类名可以是自定义的也可以是java自带的
方式二、类名.class 获取
在java中所有的类都默认有一个.class属性获取结果
方式三、对象.getclass
经常用于动态检查某个对象的类型
获取结果:
根据类名创建对象
.newInstance();获取结果
访问对象属性
- 步骤1:加载class属性
- 步骤2:调用.getFields方法
结果:
读取对象的属性值
读取公有属性
1.获取指定公有属性:getField
- 创建对象
- 读取属性值
结果:
2.获取全部公有属性:getFields结果
3.读取全部属性:包括私有属性
200的属性值是私有,必须打开访问权限,否则会报错
4.读取指定属性值(包括私有)结果:
修改对象属性:set
结果:
访问方法
- 步骤1:获取Class
- 步骤2.在类上找到声明的法:getDeclaredMethod
- 步骤3.在对象上调用方法
结果:
动态打开访问权限
在利用反射访问属性/方法之前使用setAccessible打开访问权限
作用
边栏推荐
猜你喜欢
Abs (), fabs () and LABS ()
如何使用 Jmeter获取登录token并设置为全局变量?
基于data.table的tidyverse?
Orcad Capture Cadence 新建原理图多部分smybol和Homogeneous、Heterogeneous类型介绍教程
力扣59-螺旋矩阵 II——边界判断
Markdown语法
leetcode 231. Powers of 2
Li Mu hands-on learning deep learning V2-BERT fine-tuning and code implementation
LitJson报错记录
数据库定时备份winserver2012篇
随机推荐
染料修饰核酸RNA|[email protected] 610/[email protected] 594/Alexa 56
肝完 Alibaba 这份面试通关宝典,我成功拿下今年第 15 个 Offer
ES6-箭头函数
李沐动手学深度学习V2-BERT微调和代码实现
chart.js多条曲线图插件
Auto.js实现朋友圈自动点赞
详解虚拟机!京东大佬出品 HotSpot VM 源码剖析笔记(附完整源码)
CheckBox列表项选中动画js特效
收藏-即时通讯(IM)开源项目OpenIM-功能手册
关于shell脚本的一些思考
15 years experience in software architect summary: in the field of ML, tread beginners, five hole
敏捷交付的工程效能治理
tidyverse based on data.table?
svg胶囊药样式切换按钮
信使mRNA甲基化偶联3-甲基胞嘧啶(m3C)|mRNA-m3C
RNA-ATTO 390|RNA-ATTO 425|RNA-ATTO 465|RNA-ATTO 488|RNA-ATTO 495|RNA-ATTO 520近红外荧光染料标记核糖核酸RNA
转运RNA(tRNA)甲基化修饰7-甲基胞嘧啶(m7C)|tRNA-m7G
业界新标杆!阿里开源自研高并发编程核心笔记(2022 最新版)
Markdown语法
Leetcode 899. An orderly queue