2014-01-26 45 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