使用Java Annotation Processor查找带注释方法的方法参数?

时间:2015-07-06 20:34:16

标签: java annotations annotation-processing

我有以下注释:

@Target(ElementType.METHOD)
public @interface MyAnn {
}

以及使用@MyAnn注释的方法:

  @MyAnn
  Object myMehtod(Object x) {
  ...
  }

使用Java注释处理器,我得到带注释的元素:

Element annotatedElement // = myMehtod 
  1. 如何获取此方法的返回类型?
  2. 如何获取此方法的参数?
  3. 如何获取此方法的参数名称?

2 个答案:

答案 0 :(得分:1)

这是我的解决方案:

ExecutableType executableType = (ExecutableType)annotatedElement.asType();
List<? extends TypeMirror> parameters = executableType.getParameterTypes();
TypeMirror param1 = parameters.get(0);
DeclaredType declaredType = (DeclaredType)param1;
List<? extends AnnotationMirror> anns = ((TypeElement)declaredType.asElement()).getAnnotationMirrors( );

答案 1 :(得分:0)

ExecutableElement method = ...

您可以使用以下方法获取方法的返回类型

TypeMirror returnType = mehod.asType()

您可以使用以下方法获取方法的参数

List<? extends VariableElement> parameters = method.getParameters();

您可以通过以下方式获取参数名称

parameters.forEach(p -> {
            String name = p.getSimpleName().toString();
            TypeMirror type = p.asType();
   });