如何在 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()
.
获得
在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()
.