2014-01-26 80 views
1

我不喜歡Javadoc「Contant Field Values」頁面列出String常量的方式。Javadoc字符串的常量字段值

例子:

public static final String REGEXP_PATTERN = "^\\s*$"; 

在頁面的Javadoc這個常數會隨着^\\s*$我認爲這是完全錯誤的值上市,它應該是^\s*$

事實上,javac要求\被轉義是無關緊要的。該字段的 - 如果你問我 - 是^\s*$,這就是Javadoc應該列出的內容。

有沒有辦法可以做到這一點?

手頭的問題在於 - 不管是否相信 - 我們的Javadoc文檔也被非Java人員使用。對於非Java人來說,這是沒有意義的。

+1

爲什麼非java人閱讀javadoc?它的存在是爲了幫助** java **程序員......並且談論** java **,'「^ \ s * $」'是錯誤的,因爲如果您將其複製/粘貼到代碼中,它將無法編譯 – BackSlash

+0

「 *該字段的值 - 如果你問我 - 是「^ \ s * $」*「。但是如果你問Java,那就是「^ \\ s * $」。 – Maroun

+3

考慮可以用字符串文字表示的其他轉義符(例如tab; return,)控制字符等。如果改變這種方式,你可能會發現意義喪失。它也會違背任何Java開發人員的期望。 – McDowell

回答

1

有沒有辦法可以做到這一點?

您需要通過繼承默認的,通過relevant source code簡單介紹一下創建自己的doclet表明,你只需要提供自己的ConstantsSummaryWriterImpl子類,其getValue(FieldDoc)方法被覆蓋的地方使用member.constantValue()member.constantValueExpression()

要在適當的位置中這樣的作家,那麼你也將需要繼承HtmlDoclet並覆蓋configuration()返回自己的ConfigurationImpl這反過來又返回自己的WriterFactoryImpl這反過來又返回您的自定義常量作家子類的子類,和最後使用-doclet選項javadoc告訴它使用您的自定義doclet而不是標準的doclet。

+0

謝謝。這是要走的路。我希望有一個簡單的切換,但作爲替代方案,或許我們需要重新思考將這個特定的Javadoc頁面用於非Java人員以外的整個想法。不知道。但是,謝謝。 – peterh

+0

@nolan6000如果這只是針對一兩個特定的類,那麼編寫一個用反射API通過這些類的小Java程序確實可以更簡單一些,以提取相關細節並構建一個'.csv'(或其他)您的非Java人員可以在Excel中打開。 –

+0

是的,同意了。正如您可能已經猜到的那樣,我們使用該特定的Javadoc頁面向我們的軟件的用戶解釋一些默認配置值是什麼。 – peterh

0
public static final String REGEXP_PATTERN = "^\\s*$"; 

「\」只是「\」的轉義字符 - 沒有它的代碼將無法編譯。

+0

感謝您的回答。但問題不在於Java字符串文字中「\\」的含義。 「 – peterh

+0

」case'NUMBER'then'BIGDECIMAL'「變成」case \'NUMBER \'然後\'BIGDECIMAL \'「 - 不僅不需要文檔轉義,而且它也會被虛假地添加到它不屬於的地方。 – Grod