javassist:获取方法参数名

Javaassist获取方法参数名
本文介绍了一种利用Javaassist库获取Java方法参数名称的方法。通过ClassPool和CtClass等API,可以实现对字节码的操作,进而读取方法签名中的参数名。
部署运行你感兴趣的模型镜像

代码如下:

 

	/*
	 * 获取方法参数名
	 */
	private String[] getMethodVariableNames(String targetClass, String targetMethodName) {
		Class<?> clazz = null;
		try {
			clazz = Class.forName(targetClass);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		ClassPool pool = ClassPool.getDefault();
		pool.insertClassPath(new ClassClassPath(clazz));
		CtClass cc;
		CtMethod cm = null;
		try {
			cc = pool.get(clazz.getName());
			cm = cc.getDeclaredMethod(targetMethodName);
		} catch (NotFoundException e) {
			e.printStackTrace();
		}

		// 使用javaassist的反射方法获取方法的参数名
		MethodInfo methodInfo = cm.getMethodInfo();
		CodeAttribute codeAttribute = methodInfo.getCodeAttribute();
		LocalVariableAttribute attr = (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag);
		String[] variableNames = new String[0];
		try {
			variableNames = new String[cm.getParameterTypes().length];
		} catch (NotFoundException e) {
			e.printStackTrace();
		}
		int staticIndex = Modifier.isStatic(cm.getModifiers()) ? 0 : 1;
		for (int i = 0; i < variableNames.length; i++)
			variableNames[i] = attr.variableName(i + staticIndex);
		return variableNames;
	}

 

Javassist是一个开源的分析、编辑和创建Java字节码的类库。

合理应用,极为强大,值得掌握的第三方类库。

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值