我正在为一个名为“Auditable”的注解构建一个注解处理器,这个处理器由构建器调用(为了便于阅读,有些部分被省略了):
@Override
public boolean process( Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv ) {
//--- Obtain all annotated elements
Set<? extends Element> annotatedElements =
roundEnv.getElementsAnnotatedWith( Auditable.class );
//--- Separate elements into classes, fields and methods
for ( Element element : annotatedElements ) {
ElementKind kind = element.getKind();
if ( ElementKind.METHOD.equals( kind ) ) {
checkAndAddMethod( element ); // <-- Must convert Element to Method
}
... }
void checkAndAddMethod( Method method ) { // <-- parameter type = Method
如何将带注解的Element
转换为Method
?
2条答案
按热度按时间qmb5sa221#
我不认为你可以,因为语言模型代表代码,而反射代表正在运行的JVM。也许你可以用
ExecutableElement
来代替吗?它代表方法、构造函数或初始化器,作为语言模型的一部分。omhiaaxx2#
如果一个注解有足够的数据,比如类名、方法名和参数等,那么下面的代码片段可以为您提供一个Method对象。
有关示例,请参考此link1、link2。