【问题标题】:How to get from a Method to the Annotations of its Parameters during Annotation-processing?如何在注释处理期间从方法获取其参数的注释?
【发布时间】:2016-06-13 11:27:51
【问题描述】:

在注解处理过程中,我目前正在处理一个方法的注解:

@Override
public boolean process(Set<? extends TypeElement> elements, RoundEnvironment env) {
  Messager msg = processingEnv.getMessager();
  for (TypeElement te : elements) {
    for (Element e : env.getElementsAnnotatedWith(te)) {
      processAnnotation(e, msg);
    }
  }
  return true;
}

private void processAnnotation(Element method, Messager msg) {
  final Info ann = method.getAnnotation(Info.class);
  assert method.getKind() == ElementKind.METHOD;
  ....

我可以通过

获得参数的类型(或其镜像)
  final ExecutableType emeth = (ExecutableType)method.asType();
  final List<? extends TypeMirror> parameterTypes = emeth.getParameterTypes();

但是我如何获得它的注释呢?我想检查一下,所考虑的方法是否有任何带有注释@Input 的参数。例如,处理后的来源可能是:

@Info
void myMethodOk(@Input String input) {  }

@Info
void myMethodNotOk(@Input String input) { }

【问题讨论】:

    标签: java annotations annotation-processing method-parameters


    【解决方案1】:

    如果您将方法Element 转换为ExecutableElement,那么您可以调用executableElement.getParamerers()。这会返回一个VariableElements 列表,您可以从中获取注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多