簡體   English   中英

使用注釋處理器獲取方法的返回值

[英]get the return value of method using annotation processor

我是annotation processor的新手,想知道在注解處理過程中是否可以獲取到注解標注方法的返回值。 例如,我有注釋

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Parameters {}

我有一個標有此注釋的 class:

@Parameters
public static Collection<Object[]> data() {
    return Arrays.asList(new Object[][] {
            { 0, 0, 0 }, { 1, 1, 2 }
    });
}

我有可能使用注釋處理工具(apt)獲得new Object[][] { { 0, 0, 0 }, { 1, 1, 2 } }嗎?

是的,您可以通過過濾 class 中可用的方法列表並使用您的自定義注釋進行注釋來使用反射調用您的方法。 您的代碼將如下所示:

Object[][] objectArray; // should be initialize
Class<?> clazz = object.getClass();
for (Method method : clazz.getDeclaredMethods()) {
    if (method.isAnnotationPresent(Parameters.class)) {
        objectArray = method.invoke(object);
    }
}

return objectArray;

其中object是包含您的方法的 class 的實例。

暫無
暫無

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

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