2009-12-18 44 views
5

是否有一個註釋來聲明即使JavaDocs是公共的,某個方法將不會包含在JavaDocs中?禁用JavaDocs的註釋

喜歡的東西:

@nojavadocs 
public void foo(){ 
//... 
} 

附:我理解這裏關於API的一點,但這些方法只是「不受支持」。他們工作(並且必須公開從其他軟件包訪問),但我們不想打擾記錄它們,並在功能與支持的使用場景無關時回答有關如何使用它們的問題。良好的設計可能意味着將他們轉移到另一個班級,但他們邏輯上指的是班級中的數據。

回答

4

如果您使用的是Sun的JavaDocs工具,則不適用。

他們有a feature request它,但它一直在低優先級自1997年以來

您可以編寫定製的doclet來克服這個問題,或者使用第三方工具(DocFlex或此類)。

+1

很高興聽到有一個功能請求 - 至少我不是唯一的虛擬的要求這個:-) – 2009-12-20 07:41:32

4

是的......但不是一個好方法(公開的方法不是真正的「公開」不是一個偉大的設計實踐)。

您可以按照this thread中給出的建議使用@deprecated標記方法,然後在運行javadoc時使用選項-nodeprecated

編輯:正如其他人已經指出,這是而不是一個理想的行動。這將解決您的問題,但您真的需要重新考慮爲什麼要隱藏該方法 - 給定編譯後的代碼版本,某人仍然可以看到您的功能;將其隱藏在文檔中實際上並不隱藏該方法。我的意思是在此強調,限定符private,publicprotected具有您應該考慮和有效利用的含義。 有沒有這樣的事情作爲「隱藏」public方法

+0

這將工作,並且是一個聰明的解決方案,但這是一個問題,因爲您濫用了棄用註釋,因此您的代碼與「意味着什麼」不匹配。至少我會評論一下這些方法,並且清楚地解釋我爲什麼要做這些奇怪的事情。工具(例如eclipse)會標記使用已棄用方法的警告(儘管您可以標記這些警告被忽略)。 – 2009-12-18 14:38:09

+0

我並不是主張使用這種策略 - 顯然這裏存在一個更大的問題,標記某些棄用的東西可能是非常不受歡迎的,但它可以滿足OP的需求。我在Java論壇上鍊接的主題與您所做的完全相同,因此應該清楚地評論該方法以避免混淆。 – 2009-12-18 14:44:59

6

我能想到的,你想要這樣做的唯一原因就是在某種意義上「隱藏」該方法,如果僅僅是在文檔方面。如果你這樣做了,你會設計文檔被「破解」,因爲當文檔過時並且不再準確地反映該文檔的功能時文檔會被破壞。由於該方法仍然是公共API的一部分,您無論如何都不會真正隱藏它。

如果您希望某個方法在班級或少數用戶以外未使用,請將其設置爲私人或包裝。如果這樣不方便,它必須是公開的,我只是非常清楚地記錄它的使用限制,可能有一個命名約定(例如,python這樣做,實體名稱被下劃線包圍,你可以看到,但是意味着比公共API更多地實現類實現)

2
/** 
* Don't use this method <br> 
* <i>or all your data will be lost.</i> 
*/ 
public void foo(){ 
    //... 
} 

好,用一個更好的解釋爲什麼用戶不應該使用這種方法...
請記住,這不是很難找到使用反編譯或反射任何(公共)方法。