java反射获取方法参数名、参数类型

news/2025/3/31 10:55:55/
java">package com.hx.utils;import com.hx.bean.Student;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;import java.lang.reflect.*;/*** 反射应用*/
public class MyReflect {public static void main(String[] args) {
//        cancelAccess();getMethodInfo();}public static void getMethodInfo() {try {Class<?> cls = Class.forName("com.hx.bean.Student");Field[] fields = cls.getFields();//只能获取公有的成员变量for (int i = 0; i < fields.length; i++) {System.out.println("获取到公有的成员变量:" + fields[i].getName());}System.out.println("************以下是获取方法的参数名、参数类型");Method[] methods = cls.getMethods();for (Method method : methods) {String methodName = method.getName();if (!"add".equals(methodName)) {continue;}Parameter[] parameters = method.getParameters();for (int i = 0; i < parameters.length; i++) {String name = parameters[i].getType().getName();System.out.println(methodName + "的第" + (i + 1) + "个入参名为:" + parameters[i].getName() + " 参数类型为:" + name);}}} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}public static void cancelAccess() {//通过反射创建对象try {Class studentClass = Student.class;Constructor c = studentClass.getConstructor(String.class, String.class, int.class);Object obj = c.newInstance("小明", "1001", 18);//通过属性名获取field对象Field f = studentClass.getDeclaredField("name");//取消属性访问权限控制
//            f.setAccessible(true);//获取更改前name的值System.out.println("更改前:" + f.get(obj));System.out.println(obj);f.set(obj, "小刚");System.out.println("更改后:" + f.get(obj));System.out.println(obj);} catch (Exception e) {throw new RuntimeException(e);}}}

返回结果

获取到公有的成员变量:sex
获取到公有的成员变量:age
************以下是获取方法的参数名、参数类型
add的第1个入参名为:x 参数类型为:int
add的第2个入参名为:y 参数类型为:intProcess finished with exit code 0


http://www.ppmy.cn/news/1520847.html

相关文章

猴子采集:实时数据采集,正在拼采集,类目采集,整店采集

图片&#xff1a;玉溪 文章&#xff1a;云长 作者&#xff1a;yunchang227 猴子采集核心功能亮点 &#xff1a; 一&#xff1a;无限自动采集 通过先进的算法和技术&#xff0c;猴子采集可以实现无限自动采集&#xff0c;彻底解放你的双手。只需设置好相关参数&#xff0c;…

《javaEE篇》--线程池

线程池是什么 线程的诞生是因为进程创建和销毁的成本太大&#xff0c;但是也是相对而言&#xff0c;如果频繁的创建和销毁线程那么这个成本就不能忽略了。 一般有两种方法来进一步提高效率&#xff0c;一种是协程(这里不多做讨论),另一种就是线程池 假如说有一个学校食堂窗口…

MCU官方IDE软件安装及学习教程集合 — STM32CubeIDE(STM32)

简介 各MCU厂商为保证产品的市场地位以及用户体验&#xff0c;不断的完善自己的产品配套&#xff0c;搭建自己的开发生态&#xff0c;像国外ST公司&#xff0c;国内的GD&#xff08;兆易创新&#xff09;&#xff0c;AT&#xff08;雅特力&#xff09;等等。目前就开发生态而言…

数据结构(邓俊辉)学习笔记】串 10——BM_BC算法:坏字符

文章目录 1.坏字符2. 特殊情况 1.坏字符 实际上&#xff0c;刚才的实例中我们所展示的那样一个计算过程&#xff0c;就是所谓 BM 算法所采用的策略之一&#xff0c;而这一策略&#xff0c;将我们刚才所说的教训称作坏字符。 在这里&#xff0c;不妨改为基于蛮力算法的第二个版…

C++系列-STL容器的应用举例

STL容器的应用举例 [TOC](STL容器的应用举例) 临安春雨初霁》 陆游 世味年来薄似纱&#xff0c;谁令骑马客京华。 小楼一夜听春雨&#xff0c;深巷明朝卖杏花。 矮纸斜行闲作草&#xff0c;晴窗细乳戏分茶。 素衣莫起风尘叹&#xff0c;犹及清明可到家 code: /* 报道的有10个同…

【JUnit单元测试框架】

单元测试的概念 单元测试&#xff0c;顾名思义&#xff0c;是针对软件中的最小可测试部分&#xff08;通常是类或方法&#xff09;进行的测试。它的目的是确保这些最小单元按照预期工作&#xff0c;从而帮助开发者快速定位和解决问题。单元测试通常遵循“隔离”原则&#xff0…

C++基础知识之顺序结构

顺序结构 --> 小数学问题 1.数据类型&#xff1a; short 短整形 2字节 65335 int 整型 4字节 2147483647 10位 long long 长整型 8字节 .... 19位 float 单精度浮点数 4字节 .... …

如何在知行之桥上通过业务单号查找原始报文?

在知行之桥中接收或发送的数据通常是EDI原始报文&#xff0c;知行之桥会对EDI原始报文进行格式转换&#xff0c;以方便用户后端系统的处理。因此&#xff0c;一般情况下&#xff0c;用户看到的都是转换后的数据结构&#xff0c;例如Json、XML或Excel等&#xff0c;无需直接查看…