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

day15 反射

前提:Java是一个面向对象的语言

而对象都是基于类实现的

每个类都有自己的一个类对象,类对象每个类有且只有一个

基于这个类对象,出现了反射,

反射可以动态获取类的方法,属性,构造方法,并且可以越过权限访问对象或者类的私有属性

每一个类都会有自己的[类对象](类的信息) 每个类在内存中只有一个类对象

反射更多是怎么用,用法要会

获取类对象信息

三种方法:

1>Class clazz = 类名.class

2>Class clazz = 对象.getClass();

3>Class clazz = Class.forName("类的全名");

clazz = Class.forName("com.easy.easy410.EasyA");

通过类对象才能获得方法,构造方法,属性

反射方法

Method 反射方法类 用来保存方法信息的,相当于一个别名,指向了那个方法,你需要动态调用这个方法,他才会执行

获取方法的方式以及区别

1> Method m = clazz.getMethod("方法名,不需要括号",如果有参数列表需要指定参数的类);

eg:

m = clazz.getMethod("test",int.class,String.class);

2>Method m = clazz.getDeclaredMethod("方法名,不需要括号",如果有参数列表需要指定参数的类)

这个declared可以获得任意权限的方法,但是仅限于这个类自己定义的方法或者属性,继承来的不算

3>Method[] marr = clazz.getMethods(); 获取所有public方法,包括继承的

4>Method[] marr = clazz.getDeclaredMethods(); 获取所有类中定义好的方法,没有继承的,所见即所得

反射方法的执行

(方法的返回值类型)引用名 = 反射方法名.invoke(对象实例化,传递参数);

反射属性

Field 反射属性类

获得属性的方式

1>Field f = 类对象名.getField("属性名");

2>Field f = 类对象名.getDeclaredField("属性名");

3>Field[] f = 类对象名.getFields("属性名");

4>Field[] f = 类对象名.getDeclaredFields("属性名");

和获得方法的细节一样

反射属性的获取以及修改

1>获取 f.get();

2>修改 f.set(属性值);

无权访问的直接用setAccessible(true)越权

反射构造方法

Constructor 反射构造类

反射构造方法的方式

1>Constructor c = clazz.getConstructor();

2>Constructor c = clazz.getDeclaredConstructor();

3>Constructor[] c = clazz.getConstructors();

4>Constructor[] c = clazz.getDeclaredConstructors();

反射构造方法的使用

c.newInstance();

反射的通用方法

权限的设置

m.setAccessible(true);

这样设置之后,私有权限仅对这个属性/方法/构造方法反射对象放开,只有通过这个反射对象执行才能越过private权限

获取名称

String 名称 = 反射对象.getName();

获取权限修饰符类型

int m = 反射对象.getModifiers();

boolean b = Modifier.isPrivate(m);

sout(b);

反射的用法就没了,更多的是要灵活运用吧,还没jdbc会用到反射,以及很多东西的实现都有反射的参与。

http://www.jsqmd.com/news/651710/

相关文章:

  • 【生成式AI安全审计黄金标准】:20年攻防专家首次公开7大必查维度与实时风险拦截清单
  • html标签如何正确闭合_self-closing标签注意事项【介绍】
  • “钱袋子”被管好了!融智天合同管理系统应收统计功能实测 - 业财科技
  • iOS Runloop 深度解析
  • AWD Watchbird:PHP Web应用防火墙终极防护指南
  • 官方认证|2026年青岛七大正规豆包优化公司排名,余音智能综合实力遥遥领先 - 十大品牌榜
  • 多商户电商系统接入LINE Pay实战:从沙盒申请到退款流程的完整避坑指南
  • C语言第四节 字符和字符串和ASCII编码串
  • SAP FI 实战:从零到一构建企业核心科目表(COA)
  • #官方认证|2026年国内六大正规测厚仪公司排名,广东佛山等地覆盖,巢目科技技术实力遥遥领先 - 十大品牌榜
  • 融智天合同管理系统与预算管理融合体验 - 业财科技
  • 做一物一码要花多少钱才能做:先算清成本,再看长期回报
  • 官方认证|2026年青岛七大正规GEO优化公司排名,余音智能综合实力遥遥领先 - 十大品牌榜
  • 如何用AlwaysOnTop实现终极窗口置顶:免费效率提升完整指南
  • #官方认证|2026年国内六大正规X射线测厚仪公司排名,广东佛山等地巢目科技技术实力遥遥领先 - 十大品牌榜
  • 你的AI助手偷偷在学什么?这个浏览器仪表盘扒光了AI的脑子
  • 别再让图片变形了!Qt中QLabel显示图片的三种自适应方案实战(附完整代码)
  • 2026.4.15:超详细无人值守Ubuntu-Server安装保姆级教程
  • Abaqus子程序调试:如何在Visual Studio中高效单步追踪变量变化(2024最新版)
  • CSS如何通过Emotion管理样式加载顺序_处理组件优先级问题
  • C#怎么实现EF Core迁移 C#如何用Entity Framework Core进行数据库迁移和更新表结构【数据库】
  • 内网服务HTTPS化实战:除了mkcert,我们还需要注意什么?(含Nginx/IIS配置与客户端证书分发避坑指南)
  • SITS2026 AI面试模拟器深度拆解(训练数据/反馈闭环/岗位适配度三重验证)
  • 英雄联盟玩家必备的智能工具箱:5个核心功能提升你的游戏效率
  • 突破百度网盘限速壁垒:baidu-wangpan-parse工具实战指南与生态整合
  • WebLogic 10.3.6高危漏洞(CVE-2020-14750)实战修复指南:从补丁获取到验证的全流程解析
  • 让 AI 帮我读代码:一次 Nexent 编程助手实践
  • 告别卡顿与臃肿:Dell G15散热控制终极解决方案tcc-g15深度评测
  • UUV Simulator终极指南:构建高保真水下机器人仿真平台
  • 2025届必备的十大降重复率平台横评