簡體   English   中英

使用Java注釋處理器理解方法參數的參數化類型

[英]Using Java Annotation Processor To Understand Parameterized Types Of Method Parameters

我正在嘗試使用注釋處理器來驗證注釋,為此,我試圖弄清楚如何使用API​​來確定ExecutableElement的Parameter是否為參數化類型(例如List <Foo>) ,如果是,則參數化的類型是(Foo)。

除了解析ve.asType()。toString()給出的字符串(還有VariableElement ve是ExecutableElement e.getParameters()的元素)之外,還有什么方法可以做到這一點? 與僅使用字符串相比,對這些類型有更好的處理將是很好的。

這個想法是要知道何時將其強制轉換為什么,在這種情況下,您需要獲取泛型類型參數,因此您需要DeclaredType轉換為DeclaredType

例如下面的方法

@SampleAnno
public void something(List<String> paramx){

}

像這樣的處理器中的代碼

ExecutableElement method = (ExecutableElement) this.sampleElement;

method.getParameters()
        .forEach(parameter -> ((DeclaredType)parameter.asType()).getTypeArguments()
                .forEach(typeMirror -> {
                 messager.printMessage(Diagnostic.Kind.NOTE, "::::::: > [" + typeMirror.toString() + "]");
                }));

應該打印Information:java: ::::::: > [java.lang.String]

暫無
暫無

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

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