我如何在Java 11中的注释处理器中获取注释方法参数的名称
在Java 8中,我曾经能够做到
Symbol.MethodSymbol annotatedMethod = (Symbol.MethodSymbol) annotatedElement;
,然后
annotatedMethod.params
我将获得该方法参数的两种类型,以及方法声明中参数的名称。
现在,导入com.sun.tools.javac.code.symbol在Java 11中是内部的,我可以通过使用以下方式获得参数的类型:
ExecutableType executableType = (ExecutableType)annotatedElement.asType();
List<? extends TypeMirror> parameters = executableType.getParameterTypes();
但是如何获得参数的名称?
In Java 8, I used to be able to do
Symbol.MethodSymbol annotatedMethod = (Symbol.MethodSymbol) annotatedElement;
and then
annotatedMethod.params
And I would get both the types of the method's parameters, AND the names of the parameters in the method declaration.
Now that import com.sun.tools.javac.code.Symbol is internal in Java 11, I can get the parameters' types by using:
ExecutableType executableType = (ExecutableType)annotatedElement.asType();
List<? extends TypeMirror> parameters = executableType.getParameterTypes();
But how can I get the parameters' names?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
executableType
是“ Mirror API”的一部分,通常与类型有关。要检查元素,请使用“元素API”。在您的情况下,参数是由
javax.lang.model.element.variable element
建模的,并且可以使用element.getSimplename()()
获得该名称。我想,
AntotatedElement
您的代码是executableElement
。如果是这样,可以通过entotatedElement.getParameters()
获得参数的元素。ExecutableType
is a part of the "Mirror API", which is generally about types. For inspecting elements, use the "Element API".In your case, parameter is modeled by
javax.lang.model.element.VariableElement
, and the name can be obtained withelement.getSimpleName()
.I guess,
annotatedElement
in your code is anExecutableElement
. If so, parameters' elements can be obtained viaannotatedElement.getParameters()
.