2011-10-28 35 views
4

我使用帶有Java6 +的可插入註釋處理API來自動創建一些部署XML文件。部分這些XML文件包含對象的描述。描述始終與該類本身關聯的Javadoc具有相同的內容。我可以強制將註釋作爲@Block註釋的一個字段,但會重複這些信息。在註解處理過程中是否有任何方法來獲取類/類型註釋的內容?Pluggable Annotation Processor API是否可以檢索源代碼註釋?

在這個例子中,我想在註解處理過程中得到「我的塊的很好的描述」。

/** 
* A nice description of my block 
**/ 
@Block 
public class CustomBlock { 
} 

回答

0

getDocComment這聽起來像它應該返回評論。

更新:它已移到elements utitlity

+0

除了Java6可插入註釋API沒有那個類。這是配置APT套件的更老,更痛苦的一部分 – basszero

+0

@basszero你是對的。看起來它仍然可用於更新的API,在'Elements' util中。 – Kapep

10

我似乎總是找到答案後,我張貼在SO上。

以供將來參考,這裏是解決方案

public class CustomAnnotationProcessor extends AbstractAnnotationProcessor 
{ 
    public boolean process(...) 
    { 

     // use the protected member, processingEnv 

     String comment = processingEnv.getElementUtils().getDocComment(anyElement); 


    } 
} 
+0

太棒了!我在看元素和鏡像類,因爲我期望這些類包含對它們的任何評論的引用(有道理,對吧?)我不知道這個! –

0

註釋處理API使得使用類在javax.lang.model(.*)包。這些模型語言結構和所述模型必須在編譯期間生成。由於編譯器旨在忽略註釋和文檔,因此在這些軟件包中似乎沒有任何內容,我也沒有期望這樣做,因此您可以訪問comments/doc。

我不確定javadoc設施是如何執行其工作的,也許可以提供幫助。

Kapep的答案看起來很有趣,但要注意它使用的是com.sun.*包中的東西,它是特定於實現的。除非您確定提供給您的註釋處理器環境的資源是使用這些類實現的,並且您可以從接口安全地下載,否則最好不要使用它。這最好是一個脆弱的解決方案。

編輯:另外,我還使用自定義註釋+處理器來生成XML格式的元數據,用於接線,驗證等。而且我還需要說明。因此,我所做的就是保留JavaDoc以用於編程目的和詳細信息,這可能會讓某些人直接在代碼中使用該類時感興趣,同時在註釋中具有一些描述關鍵字(或者,如果沒有提供基於類名稱/其他註釋值的默認值)可用於從某個資源文件獲取描述。該描述是針對「最終用戶」的,專注於高層次的東西,而不是特定的代碼。它有助於促進國際化。我不確定這對你有什麼用處,但是我有兩分錢。

相關問題