簡體   English   中英

如何將元素轉換為方法?

[英]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);

參考這個link1link2的例子。

我不認為你可以,因為語言 model 代表代碼,反射代表運行 JVM。你可以使用ExecutableElement代替嗎? 這表示作為語言 model 一部分的方法、構造函數或初始化程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM