我有一个小代码示例,我想包含在方法的Javadoc注释中 .
/**
* -- ex: looping through List of Map objects --
* <code>
* for (int i = 0; i < list.size(); i++) {
* Map map = (Map)list.get(i);
* System.out.println(map.get("wordID"));
* System.out.println(map.get("word"));
* }
* </code>
*
* @param query - select statement
* @return List of Map objects
*/
问题是代码示例显示在Javadoc中,没有换行符使其难以阅读 .
-- ex: looping through List of Map objects -- for (int i = 0; i list.size(); i++) { Map map = (Map)list.get(i); System.out.println(map.get("wordID")); System.out.println(map.get("word")); }
Parameters
query - - select statement
Returns:
List of Map objects
我想我错误地认为代码标记会处理换行符 . 在Javadoc注释中格式化代码示例的最佳方法是什么?
14 回答
除了已经提到的
<pre>
标签之外,您还应该使用@code
JavaDoc注释,这将使HTML实体问题(特别是泛型)的生活变得更加容易,例如:将提供正确的HTML输出:
省略
@code
块(或使用<code>
标记)将导致HTML如下:(有关参考,可在此处找到Java SE 8标记说明:Javadoc Tags)
我在javadoc评论中包含一个特定的代码示例时非常艰难 . 我想分享这个 .
请注意以下事项:
使用旧的
<code>
- 标记以防止解释大括号"new"
{@code ...}
的使用 - 标记以获取输出中包含的泛型在
@Override
中通过“{@literal @}Override
" because javadoc generator " tilts”转义@符号,因为@直接在一个开放的大括号之后删除
{@code
和{@literal
前面的一个空格,以补偿内部空间并保持对齐javadoc代码:
打印为
java源代码有很多很好的例子 . 这是“String.java”负责人的一个例子:
用
<pre></pre>
标记包含您的多行代码 .您需要
<pre></pre>
标记用于换行符,而{@code ... }
用于泛型 . 但是,不允许将左大括号放在与<generic>
标签相同的行上,因为这样一切都将再次显示在1行上 .显示在一行:
显示换行符:
另一个奇怪的事情是当你粘贴
{@code
的右括号时,会显示:输出:
保留行需要
<pre/>
.{@code
必须有自己的行<blockquote/>
仅用于缩进 .UPDATE with JDK8
正确代码的最低要求是
<pre/>
和{@code}
.产量
并且可选的周围
<blockquote/>
插入缩进 .产量
使用
<p>
和</p>
插入<p>
或周围会产生警告 .我能够使用代码1中显示的以下剪辑生成外观漂亮的HTML文件 .
(代码1)
正如预期的那样,代码1变成了图1中生成的javadoc HTML页面 .
(图 . 1)
但是,在NetBeans 7.2中,如果按Alt Shift F(重新格式化当前文件),则代码1将转入代码2 .
(代码2)
其中第一个
<pre>
现在被分成两行 . 代码2生成生成的javadoc HTML文件,如图2所示 .(图2)
史蒂夫B的建议(代码3)似乎给出了最好的结果,并且即使在按下Alt Shift F之后仍然按预期格式化 .
(代码3)
代码3的使用产生相同的javadoc HTML输出,如图1所示 .
<blockquote><pre>...
和<pre>{@code....
之间存在显着差异 . 前者将省略泛型中的类型声明,但后者将保留它 .E.g.: List<MyClass> myObject = null;
显示为带有firts的List myObject = null;
和带有第二个的List<MyClass> myObject = null;
如果您是Android开发人员,则可以使用:
使用Java代码在Javadoc中打印代码 .
这是我的两分钱 .
由于其他答案已经陈述,您应该使用 <pre> </pre> 与 {@code } 结合使用 .
使用pre和{@code}
将代码包装在
<pre>
和</pre>
中可防止代码折叠到一行;将代码包装在
{@code
}
中会阻止<
,>
,其间的所有内容都会消失 . 当您的代码包含泛型或lambda表达式时,这尤其有用 .Problems with annotations
当您的代码块包含注释时,可能会出现问题 . 这可能是因为当
@
符号出现在Javadoc行的开头时,它被认为是Javadoc标记,如@param
或@return
. 例如,这段代码可以被错误解析:在我的情况下,上面的代码将完全消失 .
要解决此问题,该行不得以
@
符号开头:请注意,
@code
和@Override
之间有两个空格,以保持与下一行对齐 . 在我的情况下(使用Apache Netbeans),它被正确呈现 .尝试用“pre”替换“code” . HTML中的pre标记将文本标记为预格式化,并且所有换行符和空格将与您键入时完全相同 .
我刚刚阅读了Javadoc 1.5参考here,只有
<
和>
的代码必须包含在{@code ...}
中 . 这是一个简单的例子:我用
<pre class="brush: java"></pre>
标签附上我的示例代码,并使用SyntaxHighlighter发布javadocs . 它不会伤害IDE并使发布的代码示例美观 .使用Java SE 1.6,看起来所有UPPERCASE PRE标识符都是在Javadoc中执行此操作的最佳方式:
这是最简单的方法 .
我从java.awt.Event方法获得的javadoc示例:
这产生的输出看起来与常规代码完全相同,常规代码间距和新行完整无缺 .