如何在 Java 11 的注释处理器中获取注释方法参数的名称

How can I get the names of annotated method parameters in an Annotation Processor in Java 11

在Java8,我以前可以做到

 Symbol.MethodSymbol annotatedMethod = (Symbol.MethodSymbol) annotatedElement;

然后

annotatedMethod.params

我会得到方法参数的类型,以及方法声明中的参数名称。

现在 import com.sun.tools.javac.code.Symbol 在 Java 11 中是内部的,我可以使用以下方法获取参数的类型:

ExecutableType executableType = (ExecutableType)annotatedElement.asType();
            List<? extends TypeMirror> parameters = executableType.getParameterTypes();

但是我怎样才能得到参数的名称呢?

ExecutableType是“镜像API”的一部分,一般是关于类型的。要检查元素,请使用“Element API”。

在你的例子中,参数由javax.lang.model.element.VariableElement建模,名称可以通过element.getSimpleName()获得。

我想,您的代码中的 annotatedElement 是一个 ExecutableElement。如果是这样,参数的元素可以通过annotatedElement.getParameters().

获得