通过反射获取参数名称

【开关电源】开关电源实战经验分享 开关电源原理设计、Layout设计经验分享 阅读详情

通过反射,可以获取到方法的参数类型,返回值类型,方法名称,这些大家应该都清楚,但是能够获取得到参数名称吗?在spring中,通常通过参数名称进行参数匹配并赋值。

在JDK1.7版本及以下,我们可以借助于Spring中的类LocalVariableTableParameterNameDiscoverer,来获取得到参数名称。需要注意的是,该方法似乎只对类的方法有效,针对接口的方法无效。

使用如下:

package com.company.test;

import org.springframework.core.LocalVariableTableParameterNameDiscoverer;

import java.lang.reflect.Method;
import java.util.Arrays;

public class MethodParameterName {

    public void getInfo(String name, Integer age) {
    }

    public static void main(String[] args) {
        LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
        Class<?> clazz = MethodParameterName.class;
        Method[] methods = clazz.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println("方法名称:" + method.getName());
            String[] parameterNames = discoverer.getParameterNames(method);
            if (parameterNames != null) {
                Arrays.asList(parameterNames).forEach(item -> System.out.println("方法参数名称:" + item));
            }
        }
    }
}

如果是在JDK1.8,我们又多了一种方法,JDK1.8中新增了

 

Plant Simulation智能行车/天车/起重机建模(1)-基本对象说明 摘要: MultiPortalCrane(多门式起重机)是一种灵活物料搬运设备,适用于造船、钢铁等行业,支持零件预组装、钢板/钢卷智能料场管理及设备装卸。其特点包括: 多门架协同:支持同轨道多门架运行,内置防撞检测; 模块化控制:可独立调节门架、小车及吊钩的速度、加速度和悬臂长度; 多样化搬运:通过目标位置设置或连接器实现零件运输; 故障与统计:可配置MTTR和可用率,实时监控各部件状态。 通过对话框可自定义轨道尺寸、门架数量及运动参数,并支持编程调用(如getPortals方法)。适用于需高精度定位和协同 阅读详情

相关推荐

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

睶 38万+

java反射获取方法的参数名

java反射获取方法的参数名 从JDK8开始,反射类添加了Parameter,通过Parameter类,我们可以从.class编译后的文件中获取方法上参数名。 获取参数名的方法:Parameter.getName() 示例: public static List<String> getParameterNameJava8(Class clazz, String methodName) ...

weixin_45520214的博客 1923

Python 爬取新浪财经 7x24(1): 下载数据

前言 最近在做一个需要很多财经数据的项目。于是想到可不可以通过爬虫来解决(尝试白嫖)。 提供财经数据的网站有很多个,其中比较靠谱和更新比较及时的应该是新浪7x24 live数据。 http://finance.sina.com.cn/7x24/?tag=0 这个问题有一定的难度,因为这个网页是动态加载的。每一次只会加载部分数据,而只有拉到底部才可以加载新的数据。 于是乎,我们要做的事情是: 下载数据 保存到数据库 本篇介绍如何下载数据。 代码 闲言少叙书归正文,代码的实现如下: import reque

ZJ_11701的博客 2905

Java8反射获取方法的参数名称 类和接口

java8反射获取方法的参数名称 文章目录java8反射获取方法的参数名称1.简要说明2.java类获取方法参数名称测试代码解决方法执行结果3.接口测试代码执行结果解决方法感谢 1.简要说明 演示springboot版本为2.0.3.RELEASE 为啥要分java类和java接口两种进行参数获取的演示 java类编译成class文件后,方法签名 和 参数 会保存在字节码文件中,通过一些...

谢文峰的博客 5542

Mac本地部署OpenClaw:从零搭建企业级知识库AI助手

大语言模型(LLM)作为当前人工智能的核心技术,通过其强大的自然语言理解和生成能力,正在深刻改变信息交互方式。其原理是基于海量数据训练的深度神经网络,能够根据上下文预测并生成连贯文本。这一技术的核心价值在于,它能够作为智能中枢,理解和执行复杂指令,从而将通用AI能力转化为解决特定业务问题的生产力。在工程实践中,通过AI Agent框架(如OpenClaw)将LLM与外部工具和知识系统连接,是实现其价值的关键。这涉及到**本地部署**与**私有化**部署,以确保数据安全与成本可控。具体应用场景包括企业知识库问

weixin_33402252的博客 376

手把手教你用SIMCOM A7670C_FASL模组实现双路MQTT连接阿里云(附完整源码)

本文详细介绍了如何使用SIMCOM A7670C_FASL 4G模组实现双路MQTT连接阿里云,包括硬件配置、开发环境搭建、双路MQTT架构设计及实现细节。通过完整的源码示例和实战指南,帮助开发者快速掌握物联网设备开发中的多路MQTT连接技术,提升工业级应用的开发效率。

weixin_33696822的博客 226

JAVA通过反射获取方法真实参数名

默认情况下,我们是无法获取到方法中参数的名称,通过反射机制也只能获取到类似于arg0,arg1这样表示参数顺序的"参数名" 这样当我们需要使用方法的实际参数时,比方说spring自动根据请求的参数给方法参数赋值时,或者创建接口的文档时,就会比较麻烦。因为java文件在编译时,不会将参数名称信息记入class文件中,自然也不能通过反射获取到。 在JDK 8之后,我们可以通过在编译时指定“-para...

qq_35448165的博客 5403

【虚拟化生态平台】虚拟化平台esxi挂载USB硬盘

虚拟化平台安装好之后,一般情况下,只有一个硬盘在工作,其他的外接硬盘(我的只有一个ssd硬盘,其他的均是usb外接,SATA接口的硬盘是否这样我暂时不清楚哈)没有在工作,但是一个硬盘明显不够我们使用的,所以我们需要去挂载外接的硬盘来扩容。...

Rubik Blog 4834

反射获取方法的参数类型和参数名

【代码】反射获取方法的参数类型和参数名。

不积跬步,无以至千里 618

HFSS - 侧馈矩形微带天线设计与仿真

一、设计指标 中心频率:2.45GHz 介质板厚度:1.6mm 介质板相对介电常数:4.4 二、理论计算 辐射贴片宽度w=c2f(εr+12)−12w=\frac{c}{2 f}\left(\frac{\varepsilon_{r}+1}{2}\right)^{-\frac{1}{2}}w=2fc​(2εr​+1​)−21​ 辐射贴片长度L=cfεe−2ΔLL=\frac{c}{f \sqrt{\varepsilon_{\mathrm{e}}}}-2 \Delta LL=fεe​​c​−2ΔL

MaxWei 1万+

Python计算时间差的方法

使用datetime模块是Python内置的方法,使用timedelta对象可以更精确地计算时间差,而使用dateutil库则提供了更为灵活和方便的操作方式。我们可以使用datetime模块中的datetime类来表示一个具体的日期和时间,并进行相应的运算。在Python中,我们经常需要计算日期和时间之间的差异,例如计算两个日期之间的天数、小时数、分钟数等。Python提供了多种方法来计算时间差,下面我们将介绍其中的几种常用方法,并附上相应的源代码。在上面的代码中,我们使用了dateutil库中的。

学习使你进步。 2083

java反射 获取方法参数名_java 反射借助 asm 获取参数名称最优雅简单的方式

背景说明最近写反射相关的代码,想获取对应的参数名称,却发现没有特别好的方式。jdk7 及其以前,是无法通过反射获取参数名称的。jdk8 可以获取,但是要求指定 -parameter 启动参数,限制较多。期间尝试过类似于 Mybatis 使用 @Param 的方式,但是感觉不够优雅,后来发现了下面的这个工具。asm-tool 是基于 asm 构建的常见工具类。下面简单介绍下使用方式。快速开始准备jd...

weixin_39974400的博客 302

电池模拟器【 电化学模型深度解析:PNGV模型原理与应用(专业科普版)】

1. 模型起源PNGV(Partnership for a New Generation of Vehicles)模型诞生于1993年美国“新一代汽车合作计划”,旨在提升混合动力汽车电池系统的建模精度。该模型最初针对铅酸电池设计,后经改进广泛用于锂离子电池、镍氢电池等动态特性仿真。2. 模型定位PNGV属于**等效电路模型(ECM)**的进阶版本,介于简单Rint模型与复杂电化学模型(如P2D模型)之间,兼顾计算效率与精度,是BMS(电池管理系统)中SOC/SOH估算的主流选择。PNGV模型凭借。

优快云-新能源汽车研发测试专业博主 1698

Java反射获取方法真实参数名称

java原始的反射是不能获取方法菜蔬的名称的…这里借住了地方jar包 使用maven管理jar <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.27.0-GA</version> </dependency> Java示范代码: /** * 反射工具类

qq_38229543的博客 755

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java反射获取到接口和类的方法对应的参数名称(非参数类型)

假设有方法: String adminTest(String mobile,int age); 希望获取到参数名称: [mobile,age] java反射提供了很多方法,获取所有的方法,获取所有的参数类型等,但是却没有一个方法能够帮助我们获取方法的参数名列表。 首先: 为什么我们需要获取到方法对应的参数名称? 原因是例如mybatis的mapper接口中定义了很多参数名称,在xml用占位符来标识,就可以类似通过这种方法来一一对应, 包括spring的参数解析...

你一个人,就不想到别处看看? ---- 我怕一转身连你也不见了...... 3490

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java反射获取方法参数名称

java原始的反射是不能获取方法菜蔬的名称的..这里借住了地方jar包 使用maven管理jar org.javassist javassist 3.18.1-GA java示范代码 Class clazz = IExample.class; try { ClassPool pool = ClassPool.getD

欧神的博客 3986

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

J2SE_通过反射能获取方法参数名称吗?

一、Java通过反射可以获取方法的参数名称吗? 不能!!! 二、测试示例代码: import java.lang.reflect.Method; class T { public void print(String username) { System.out.println(username); } } public class Test { public stat

王宝锋的专栏 659

java 反射 借助 asm 获取参数名称最优雅简单的方式

背景说明 最近写反射相关的代码,想获取对应的参数名称,却发现没有特别好的方式。 jdk7 及其以前,是无法通过反射获取参数名称的。 jdk8 可以获取,但是要求指定 -parameter 启动参数,限制较多。 期间尝试过类似于 Mybatis 使用 @Param 的方式,但是感觉不够优雅,后来发现了下面的这个工具。 asm-tool 是基于 asm 构建的常见工具类。 下面简单介绍下使用方式。 快...

1万+

关于如何在开发工具Eclipse以及IDEA中反射的获取方法中参数名称

        关于如何在开发工具Eclipse中反射的获取方法中参数名称         关于如何在开发工具IDEA中反射的获取方法中参数名称          在JDK8版本以前,获取方法参数名字的时候,我们获取到的是以arg0、arg1、arg2、.....等等依次类推的获取参数名称,但是在JDK8以后开始增加了类Parameter,在class文件中保留参数名,给反射带来了极大的便利。...

薄殇一宰的博客 1404

记录JAVA反射获取方法实际参数名称

JAVA 通过反射获取方法参数时出现参数名为null情况 Parameter[] parameters = method.getParameters(); Arrays.stream(parameters).forEach(parameter -> { System.err.println(parameter.getName()); }); 输出: arg0 arg1 因为获取到的方法参数名称为空 所以返回的就是arg0 arg1 解决方案 需通过javac编译时.

weixin_45820245的博客 966

通过反射获取方法的参数名称(JDK8以上支持)

  方法的参数名,在很多时候我们是需要反射得到的。但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比。(java是静态语言,所以入参名称叫什么其实无所谓的)。   虽然名称无所谓,但很多时候,我们需要此名称来做更好的安排,比如Myabtis的应用。下面介绍两种方式获取参数名:   一、通过jdk原生反射...

weixin_30337157的博客 614

java 反射 参数名_java反射获取方法参数名称

java原始的反射是不能获取方法菜蔬的名称的..这里借住了地方jar包使用maven管理jarorg.javassistjavassist3.18.1-GAjava示范代码Class clazz = IExample.class;try {ClassPool pool = ClassPool.getDefault();CtClass cc = pool.get(clazz.getName());C...

weixin_35626408的博客 439

Java——通过反射获取函数参数名称

通过javassit获取参见 http://blog.youkuaiyun.com/viviju1989/article/details/8529453 这篇文章的方法一,实现比较麻烦,就不说了。通过spring的LocalVariableTableParameterNameDiscovererpublic static List<String> getParamterName(Class clazz, Str

学习印记 Learning imprint 2万+

java 通过反射获取方法参数列表名称

说明 一般情况下是使用不到用反射来获取参数列表名称的,只要知道参数列表

c379936197的专栏 4065

java反射获取方法名_我可以使用Java反射获取方法参数名称吗?

小编典典在Java 8中,你可以执行以下操作:import java.lang.reflect.Method;import java.lang.reflect.Parameter;import java.util.ArrayList;import java.util.List;public final class Methods {public static List getParameterNa...

weixin_39541693的博客 158

JAVA8反射获取方法的参数名称

JAVA8中可以通过java.lang.reflect.Parameter获取方法参数的名称: package com.wlh.mybatis.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.lang.reflect.Proxy; import java.util.HashMap; impor

w494047680的博客 639
上一篇: Linux常用命令
下一篇: spring boot整合spring security(自定义验证方式)
lichuangcsdn
博客等级 码龄12年 161粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值