【发布时间】:2022-12-31 00:51:29
【问题描述】:
我正在为一个名为“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?
【问题讨论】:
-
我认为你不能,因为语言模型代表代码,而反射代表运行中的 JVM。您可以改用
ExecutableElement吗?它表示作为语言模型一部分的方法、构造函数或初始化程序。
标签: java reflection annotation-processing