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

JAVA 反射总结

Java 反射机制重点总结

一、核心类

  1. ​Class类​​ - 反射入口,代表类的字节码对象

    • 获取方式:
      • 类名.class (如 String.class)
      • 对象.getClass() (如 "abc".getClass())
      • Class.forName("全类名") (如 Class.forName("java.lang.String"))
  2. ​Constructor类​​ - 代表构造方法,用于创建对象

  3. ​Method类​​ - 代表成员方法,用于调用方法

  4. ​Field类​​ - 代表成员变量,用于获取/设置变量值

二、核心API及方法

得先获得Class对象

1. 通过Class类获取 构造器 \ 方法\字段

  • ​获取构造器​​:
    • getConstructor(Class<?>... parameterTypes) - 获取public构造器
    • getDeclaredConstructor(Class<?>... parameterTypes) - 获取任意修饰符构造器(包括private)
    • getConstructors() - 获取所有public构造器数组
  • ​获取方法​​:
    • getMethod(String name, Class<?>... parameterTypes) - 获取public方法
    • getDeclaredMethod(String name, Class<?>... parameterTypes) - 获取任意修饰符方法
    • getMethods() - 获取所有public方法(包括继承的)
  • ​获取成员变量  (字段)​​:
    • getField(String name) - 获取public变量
    • getDeclaredField(String name) - 获取任意修饰符变量
    • getFields() - 获取所有public变量

2. 通过Constructor创建对象

  • newInstance(Object... initargs) - 调用构造器创建实例
  • 私有构造器需先调用setAccessible(true)打破访问限制

3. 通过Method调用方法

  • invoke(Object obj, Object... args) - 调用方法
    • obj: 调用方法的实例(静态方法传null)
    • args: 方法参数
  • 私有方法需先调用setAccessible(true)

4. 通过Field操作变量

  • get(Object obj) - 获取变量值 (静态变量传null)
  • set(Object obj, Object value) - 设置变量值
  • 私有变量需先调用setAccessible(true)

三、其他重要方法

  • Class.getName() - 获取全限定名(如java.lang.String)
  • Class.getSimpleName() - 获取简单名称(如String)
  • Class.newInstance() - 通过无参构造创建对象(已过时)

http://www.dtcms.com/a/277951.html

相关文章:

  • 开源工具DeepFilterNet:实时语音降噪
  • SQL的初步学习(二)(以MySQL为例)
  • 第四章 城市给水排水处理厂站工程
  • 双向链表:前后遍历的艺术
  • 动态规划题解_将一个数字表示成幂的和的方案数【LeetCode】
  • 高压空气冲击炮cad【3张】三维图+设计说明书
  • Python 学习之路(十)--常见算法实现原理及解析
  • 智慧公安信息化建设解决方案PPT(63页)
  • Matlab的命令行窗口内容的记录-利用diary记录日志/保存命令窗口输出
  • 什么是 MVP?产品从0到1的关键一步
  • OSPF 基础实验
  • X00211-基于残差edge-graph注意力机制的深度强化学习优化车辆路径问题
  • HarmonyOS从入门到精通:动画设计与实现之八 - 高级动画技巧(二)
  • [Plecs基础知识系列]基于Plecs的半导体热仿真方法(实战篇)_1.建立电路模型
  • C语言基础知识--文件读写(一)
  • RAID磁盘冗余技术深度解析
  • WEB渗透
  • 【LeetCode100】--- 6.三叔之和【思维导图---复习回顾】
  • 基于Java日志平台的访问链路追踪实战
  • JAVA并发——synchronized的实现原理
  • C#特性:从元数据到框架基石的深度解析
  • 强化学习初探及OREAL实践
  • Word中的批注显示与修订显示
  • 【vs2022】 error C2338: Unicode support requires compiling with /utf-8
  • 时间的弧线,逻辑的航道——标准单元延迟(cell delay)的根与源
  • [附源码+数据库+毕业论文+答辩PPT+部署教程+配套软件]基于SpringBoot+MyBatis+MySQL+Maven+Vue实现的交流互动管理系统
  • 基于Springboot+UniApp+Ai实现模拟面试小工具四:后端项目基础框架搭建下
  • 长上下文能力:FlashAttention vs. RingAttention
  • 协程的 callbackFlow 函数的使用和原理
  • 认识数据分析