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

js--28

一、反射基础

1. 反射的定义

反射允许在运行时对类的成员变量、构造方法、成员方法等信息进行编程式访问与操作,实现 “解剖” 类的能力。

2. 反射的作用

  • 获取类的完整信息,用于执行后续业务逻辑。
  • 结合配置文件,动态创建对象并调用方法,提升代码灵活性。

3. 获取 Class 对象的三种方式

  1. Class.forName("全类名"):通过全类名加载类,常用于配置文件驱动。
  2. 类名.class:直接获取类的 Class 对象,编译期已知类名时使用。
  3. 对象.getClass():通过对象实例获取其 Class 对象,运行时动态获取。


二、反射操作类成员

1. 构造方法(Constructor)

获取构造方法
  • getConstructors():返回所有公共构造方法数组。
  • getDeclaredConstructors():返回所有构造方法数组(包括私有)。
  • getConstructor(Class<?>... parameterTypes):返回单个指定参数类型的公共构造方法。
  • getDeclaredConstructor(Class<?>... parameterTypes):返回单个指定参数类型的构造方法(包括私有)。
创建对象
  • newInstance(Object... initargs):根据构造方法创建对象。
  • setAccessible(true):取消访问检查,可操作私有构造方法。

2. 成员变量(Field)

获取成员变量
  • getFields():返回所有公共成员变量数组。
  • getDeclaredFields():返回所有成员变量数组(包括私有)。
  • getField(String name):返回指定名称的公共成员变量。
  • getDeclaredField(String name):返回指定名称的成员变量(包括私有)。
操作成员变量
  • set(Object obj, Object value):为对象的成员变量赋值。
  • get(Object obj):获取对象成员变量的值。
  • setAccessible(true):取消访问检查,可操作私有成员变量。

3. 成员方法(Method)

获取成员方法
  • getMethods():返回所有公共成员方法数组(含继承的方法)。
  • getDeclaredMethods():返回所有成员方法数组(不含继承的方法)。
  • getMethod(String name, Class<?>... parameterTypes):返回指定名称和参数类型的公共成员方法。
  • getDeclaredMethod(String name, Class<?>... parameterTypes):返回指定名称和参数类型的成员方法(包括私有)。
调用成员方法
  • invoke(Object obj, Object... args):在对象上调用方法,传入参数并接收返回值。
  • setAccessible(true):取消访问检查,可调用私有方法。

三、动态代理

1. 动态代理的定义

动态代理是一种无侵入式的增强机制,在不修改原始代码的前提下,为对象添加额外功能(如日志、事务、权限控制等)。

2. 创建代理对象的核心方法

使用java.lang.reflect.Proxy类的newProxyInstance方法:

java

运行

public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)
  • 参数一:类加载器,用于加载生成的代理类。
  • 参数二:目标对象实现的接口,指定代理对象的行为。
  • 参数三InvocationHandler实例,定义代理对象的增强逻辑。
http://www.jsqmd.com/news/417073/

相关文章:

  • project管理软件哪个好?2026年project管理软件推荐与排名,解决复杂项目与效能度量核心痛点 - 十大品牌推荐
  • 计算机毕业设计springboot高校学生社团管理系统 基于SpringBoot框架的大学生社团活动管理平台设计与实现 高校学生组织数字化运营系统——以社团管理为核心的信息化解决方案
  • 2026清洁度分析仪源头厂家最新排名,西恩士这些企业值得关注 - 工业干货社
  • 聚焦2026国内诚信的间歇式智适应动力模块生产商,压力有关型动力模块/分布式动力模块,间歇式智适应动力模块供应商推荐 - 品牌推荐师
  • 2026年2月广信区门窗店推荐,门窗隔热条材质优劣解析 - 品牌鉴赏师
  • FastAPI + Ollama 实战:搭一个能查天气的AI助手
  • 跨组织协同如何选型?2026年project管理工具推荐与评价,聚焦集成与扩展痛点 - 十大品牌推荐
  • 2026年project管理软件哪个好?全面评测与推荐,针对成本效益与合规痛点 - 十大品牌推荐
  • 新佳源环保可靠吗,在泰州为企业提供环保服务有哪些优势 - 工业推荐榜
  • 讲讲河北唐道网络科技有限公司的核心竞争力是什么,产品价格贵不贵 - 工业设备
  • 别再让延迟毁了你的兄弟情!安利一款零门槛、低延迟的硬核神器:狠狠滴游戏联机
  • AO4612-ASEMI中低压MOS能效新巅峰
  • project管理工具哪个好?2026年project管理工具推荐与排名,解决安全与定制化核心痛点 - 十大品牌推荐
  • project管理工具哪个好?2026年project管理工具推荐与排名,解决安全与定制核心痛点 - 十大品牌推荐
  • 2026年市面上热门的止回阀公司推荐,消声止回阀/电液动盲板阀/气动膨胀蝶阀/天然气球阀/硬密封球阀,止回阀工厂电话 - 品牌推荐师
  • 汇总合肥口碑好的无人机培训职业学校,航拍培训课程哪个口碑好? - mypinpai
  • 王代华律师在全国处理建设工程纠纷靠谱吗,有啥优势? - 工业品网
  • project管理工具哪个好?2026年project管理工具推荐与排名,解决扩展性与成本痛点 - 十大品牌推荐
  • 亲测好用! AI论文写作软件 千笔·专业论文写作工具 VS 知文AI 专科生专属
  • 分析考研英语课程怎么联系,颜语堂联系方式及优势揭秘 - myqiye
  • 论文省心了!10个降AI率网站深度测评与推荐,MBA必看
  • 分析值得推荐的体验设计培训,长沙像素壹佰性价比咋样 - 工业推荐榜
  • 导师又让重写?AI论文网站 千笔·专业学术智能体 VS 笔捷Ai,专科生专属神器!
  • 探讨上海地区诚信的立式反应釜和加氢反应釜,哪家口碑好 - 工业品牌热点
  • RHEL7更改运行级别
  • 说说全国靠谱的SAP供应商,宁波优德云值得推荐吗? - mypinpai
  • 弘源首著大厦招商性价比高吗,中关村软件园出租服务口碑佳 - myqiye
  • 项目管理平台哪个好?2026年项目管理平台推荐与排名,解决扩展性与合规核心痛点 - 十大品牌推荐
  • 分析古生物学实验学试剂选购要点,阿拉丁性价比高值得推荐吗? - 工业设备
  • 项目管理软件哪个好?2026年系统推荐与排名,解决可视化与定制化核心痛点 - 十大品牌推荐