当前位置:网站首页>反射及在运用过程中出现的IllegalAccessException异常
反射及在运用过程中出现的IllegalAccessException异常
2022-07-06 11:23:00 【qq_37705525】
首先了解一下反射:
反射:将类的各个组成部分封装成其他对象,这就是反射机制
在字节码文件加载进内存之后,会形成一个Class类对象
以下为获取Class对象的三种方式:
Class.forName(”全类名“):将字节码文件加载进内存,返回Class 对象
多用于配置文件,可以将类名定义在配置文件中。读取文件加载类
若字节码文件已经加载进内存,只需要通过类名.Class来获取
多用于参数的传递
已经存在实例化对象,可以通过对象.getClass()方法,getClass方法继承自Object类
多用于对象的获取字节码的方式
结论:同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方法获取的Class对象都是同一个源代码中的成员方法、成员变量以及构造器会分别被封装为各自对应的数组对象
通过Class对象的获取方法可以分别获取到成员变量、成员方法和构造器:
因为成员方法、成员变量以及构造器的访问权限修饰符不同
不同的获取的获取方法可能会出现获取不到私有成员的情况,
相同的是,在获取到成员变量、成员方法和构造器后,都无法直接对私有权限修饰符修饰的成员变量和成员方法及构造器进行操作
如果直接对过去到的私有成员进行操作,会抛出IllegalAccessException异常
解决方案:忽略权限修饰符的安全检查
获取到的对象.setAccessible(true);
在获取到成员方法、成员变量、构造器之后,在相应的类method、Field、Constructor中还可以对获取到的对象进一步操作。
边栏推荐
- Some recruitment markets in Shanghai refuse to recruit patients with covid-19 positive
- 第五期个人能力认证考核通过名单公布
- Help improve the professional quality of safety talents | the first stage of personal ability certification and assessment has been successfully completed!
- Based on butterfly species recognition
- R语言dplyr包进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组均值(mean)
- A full set of teaching materials, real questions of Android interview of 7 major manufacturers including Alibaba Kwai pinduoduo
- First day of rhcsa study
- Take a look at how cabloyjs workflow engine implements activiti boundary events
- php+redis实现超时取消订单功能
- Leetcode topic [array] - 119 Yang Hui triangle II
猜你喜欢
谷粒商城--分布式高级篇P129~P339(完结)
Tongyu Xincai rushes to Shenzhen Stock Exchange: the annual revenue is 947million Zhang Chi and Su Shiguo are the actual controllers
快速幂模板求逆元,逆元的作用以及例题【第20届上海大学程序设计联赛夏季赛】排列计数
抽象类与抽象方法
三年Android开发,2022疫情期间八家大厂的Android面试经历和真题整理
A wearable arm device for night and sleeveless blood pressure measurement [translation]
Implementation of AVL tree
全套教学资料,阿里快手拼多多等7家大厂Android面试真题
MRO industrial products enterprise procurement system: how to refine procurement collaborative management? Industrial products enterprises that want to upgrade must see!
[translation] a GPU approach to particle physics
随机推荐
Implementation of AVL tree
Leetcode topic [array] - 119 Yang Hui triangle II
Test technology stack arrangement -- self cultivation of test development engineers
A wearable arm device for night and sleeveless blood pressure measurement [translation]
RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value
PMP每日一练 | 考试不迷路-7.6
Deep circulation network long-term blood pressure prediction [translation]
关于静态类型、动态类型、id、instancetype
R language uses DT function to generate t-distribution density function data and plot function to visualize t-distribution density function data
C language daily practice - day 22: Zero foundation learning dynamic planning
ACTF 2022圆满落幕,0ops战队二连冠!!
R语言ggplot2可视化:使用ggpubr包的ggstripchart函数可视化分组点状条带图(dot strip plot)、设置add参数为不同水平点状条带图添加箱图
谷粒商城--分布式高级篇P129~P339(完结)
提前解锁 2 大直播主题!今天手把手教你如何完成软件包集成?|第 29-30 期
裕太微冲刺科创板:拟募资13亿 华为与小米基金是股东
R语言ggplot2可视化:使用ggpubr包的ggdotplot函数可视化点阵图(dot plot)、设置palette参数设置不同水平点阵图数据点和箱图的颜色
业务与应用同步发展:应用现代化的策略建议
Word如何显示修改痕迹
ModuleNotFoundError: No module named ‘PIL‘解决方法
[paper notes] transunet: transformers make strongencoders for medical image segmentation