自定义注解作用在方法上,想获取方法上传的参数,该如何处理
时间: 2024-10-20 15:17:15 浏览: 9
自定义注解用于方法时,如果你想要获取方法传入的参数信息,通常的做法是在注解处理器(Annotation Processor)中实现。首先,你需要定义一个注解,比如@MyParam,然后在这个注解中声明需要提取的参数字段,例如`value()`、`defaultValue()`等。
在注解处理器的源码中,你可以通过Java.lang.reflect.Method类的getParameters()方法获取到方法的所有参数,并遍历这些参数,检查它们是否被你的自定义注解标记。接着,你可以读取注解的属性值并存储在一个映射或者其他数据结构中供后续使用。
下面是一个简单的示例:
```java
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
@Retention(RetentionPolicy.RUNTIME)
@interface MyParam {
String name();
String defaultValue() default "";
}
class MyAnnotationProcessor implements javax.annotation.processing.Processor {
// ...其他方法
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for (TypeElement annotatedClass : annotations) {
if (!annotatedClass.getEnclosedElements().stream()
.filter(ElementUtils::isAnnotatedMethod)
.map(Element::asMemberOf)
.anyMatch(method -> method.getAnnotation(MyParam.class) != null)) {
for (Method method : annotatedClass.getEnclosedMethods()) {
MyParam myParam = method.getAnnotation(MyParam.class);
if (myParam != null) {
// 提取并处理参数信息
String paramName = myParam.name();
String paramValue = myParam.defaultValue(); // 如果方法上有默认值,则使用这个
// ...进一步操作,如记录日志或存入配置文件
}
}
}
}
return true;
}
}
```
阅读全文