2024年4月20日发(作者:)
打印Java方法参数
首先描述一下具体的需求就是,能不能不需要手动添加代码就能打印Java方法所有的
参数,这有些时候在我们调试代码的时候有很重要的帮助。
按照这个需求,我们可以想一下我们大体需要一下什么信息,方法的名称,方法参数
类型,方法参数的名字,方法参数的值。
如何实现不写代码就能够实现动态的打印这些信息呢,了解Java的这时候就都会想到
动态代理。有了动态代理我们就可以不用写代码了,但是为了区分哪些方法需要打印,哪
些方法不需要打印,我们这里还需要注解来辅助区分需要打印的方法。
如何获取需要打印的信息呢,这里我相信大家都会想到反射,但是反射这里有一个参
数是拿不到的,哪个参数呢,方法参数的名字是拿不到的。这里我们采用的是asm的方式
来获取方法参数的名字。
到这里功能已经描述清楚,需要用到的技术也描述清楚,接下来就是具体怎么实现了。
首先,我们设计了一个注解类如下:
import tType;
import ion;
import ionPolicy;
import ;
@Target(ElementType.
METHOD
)
@Retention(RetentionPolicy.
RUNTIME
)
public @interface MethodLog {
}
接下来就是我们设计的最后要打印的数据的一个简单的封装类,如下:
public class MethodInfo {
private int index;//参数的索引
private Object parameterType;//参数的类型
private String parameterName;//参数的名称
private Object parameterValue;//参数的值
public MethodInfo(){}
public MethodInfo(int index, Object parameterType, String parameterName,
Object parameterValue) {


发布评论