[英]How to convert an Element to a Method?
我正在為一個名為“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
?
如果注釋有足夠的數據,如 class 名稱、方法名稱和 arguments 等,那么下面的代碼片段可以為您提供方法 object。
String className = // Get from the annotation attribute
String argumentClassName = // Get from the annotation attribute
String methodName = // Get from the annotation attribute
Class myClass = Class.forName(className);
Class argumentClass = Class.forName(argumentClassName);
Method method = myClass.getDeclaredMethod(methodName, argumentClass);
我不認為你可以,因為語言 model 代表代碼,反射代表運行 JVM。你可以使用ExecutableElement
代替嗎? 這表示作為語言 model 一部分的方法、構造函數或初始化程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.