当前位置: 首页 > 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.lryc.cn/news/586981.html

相关文章:

  • 从零开始跑通3DGS教程:(五)3DGS训练
  • lambdastream深入剖析
  • Dubbo-Admin 安装与使用指南:可视化管理 Dubbo 服务
  • uView UI 组件大全
  • MySQL优化高手笔记
  • Agent比较出名的论文整理
  • flask校园学科竞赛管理系统-计算机毕业设计源码12876
  • 详解大模型的位置编码-positional encoding
  • AWS Lambda Container 方式部署 Flask 应用并通过 API Gateway 提供访问
  • 【LeetCode100】--- 5.盛水最多的容器【复习回顾】
  • 1.1.5 模块与包——AI教你学Django
  • 【SCI 4区推荐】《Journal of Visual Communication and Image Representation》
  • 反激变换器设计全流程(一)——电路拓扑及工作流程
  • fatal: active `post-checkout` hook found during `git clone`
  • 小车避障功能的实现(第七天)
  • 零基础入门物联网-远程门禁开关:软件安装
  • RabbitMQ 之仲裁队列
  • C++进阶-多态2
  • 全星质量管理QMS软件系统——汽车零部件制造业数字化转型的质量管理中枢
  • Redis 基础详细介绍(Redis简单介绍,命令行客户端,Redis 命令,Java客户端)
  • axios拦截器
  • 牛客周赛 Round 100
  • duckdb和pyarrow读写arrow格式的方法
  • 1.1.1+1.1.3 操作系统的概念、功能
  • 新手向:使用Python构建高效的日志处理系统
  • 深入理解Java中的hashCode方法
  • 磁悬浮轴承控制全攻略:从原理到实战案例深度解析
  • Python自动化:每日销售数据可视化
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十二课——图像增强的FPGA实现
  • java+vue+SpringBoo中小型制造企业质量管理系统(程序+数据库+报告+部署教程+答辩指导)