我有一个小代码示例,我想包含在方法的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"));
* }
*
*
* @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注释中格式化代码示例的最佳方法是什么?
除了已经提到的标签之外,您还应该使用
@code
JavaDoc注释,这将使HTML实体问题(特别是泛型)的生活变得更加容易,例如:
** {@code * Sets; * System.out.println(s); * } *
将提供正确的HTML输出:
Sets; System.out.println(s);
省略@code
块(或使用标记)将导致HTML如下:
Set s; System.out.println(s);
(有关参考,可以在此处找到Java SE 8标记描述:Javadoc标记)
标签以获得换行符.
另一个不幸的是,如果你的示例代码中有块使用花括号"{}",第一个右括号将终止@code块.解决这个问题的一种方法是使用(等待它......)html实体作为大括号.我没有看到带有块的代码的标签的令人信服的论据.
不幸的是,当你点击ctrl + shift + F(Eclipse中的格式代码)时,Eclipse会弄乱{@code}标签并用{@代码替换它...
{@code}将为您做,,IIRC.
@jpdaigle我刚刚在Eclipse Galileo和Helios中尝试了这个,格式化程序并没有替换任何东西(在Mac OS上,但我从未见过格式化程序在其他平台上做过类似的事情).
_Eclipse混淆了{@code}标签,并用{@代码 - _代替它.这不是因为Eclipse,这是因为(bugged?)javadoc实用程序.如果{@code ... multiline ...}中的多行代码中有@字符,那么javadoc无法正确解析它:(至少这是我在Oracle JDK1.7.0_45 javadoc实现中看到的.
@符号也不能很好地发挥作用.
我在使用`@code}`标签包装的代码中使用`@`符号也遇到了问题.没有`{@code}`我至少可以用`{@literal @}`来逃避它们
最后,我仍然使用`<pre> <code> {...} </ code> </ pre>`,因为我不想使用`{}`来转义块。{@code ...}`吞噬了一切。
2> 小智..:我在javadoc评论中包含一个特定的代码示例时非常艰难.我想分享这个.
请注意以下事项:
使用old
- tag来防止大括号被解释
使用"new"
{@code ...}
- 标记来获取输出中包含的泛型
@Override
通过"{@literal @}Override
" 转义@符号,因为javadoc生成器"倾斜",因为@直接在一个开放的大括号之后在前面删除一个空间
{@code
和{@literal
,以补偿内部空间并保持对准
javadoc代码:
/** this methods adds a specific translator from one type to another type. ` * i.e. *** @param translator */new BeanTranslator.Builder() * .translate( * new{@code Translator
*}(String.class, Integer.class){ * {@literal @}Override * public Integer translate(String instance) { * return Integer.valueOf(instance); * }}) * .build(); * 打印为
new BeanTranslator.Builder() .translate( new Translator(String.class, Integer.class){ @Override public Integer translate(String instance) { return Integer.valueOf(instance); }}) .build();
这是一个有效的,接受的答案在我的日食中不能很好地运作(4.6.2).
这有效,但是在运行javadoc输出此警告"warning:{@code}"时,我收到警告
3> Steve B...:java源代码有很多很好的例子.这是"String.java"负责人的一个例子:
.... * is equivalent to: ** char data[] = {'a', 'b', 'c'}; * String str = new String(data); ** Here are some more examples of how strings can be used: *
...* System.out.println("abc"); * String cde = "cde"; * System.out.println("abc" + cde); * String c = "abc".substring(2,3); * String d = cde.substring(1, 2); *
In summary, ``...
而是`
`` pre> blockquote> p>
4> Zach Scriven..:用
标签封闭多行代码.
5> Rule..:你需要
换行符的标签,以及
{@code ... }
用于泛型的内部标签.但是,不允许将开口支架放在与标签相同的线上,因为这样一切都将再次显示在1行上.
显示在一行:
* .. ** {@code * public List* ..显示换行符:
* .. ** {@code * public List* ..另一个奇怪的事情是当你粘贴右括号时
{@code
,会显示:* .. ** {@code * public List* ..输出:
public List
欢迎使用Stack Overflow.要格式化帖子中的代码,您可以将它(在单独的段落上)加前四个空格,或者用反引号(```````)将它们包围起来.你不需要``和`
产生警告.`标签.我在这个脑海中编辑了你的答案.
6> Jin Kwon..:/** *
**/* {@code * public Foo(final Class> klass) { * super(); * this.klass = klass; * } * } *
是保留线路所必需的.
{@code
必须有自己的路线
只是为了缩进.
public Foo(final Class> klass) { super(); this.klass = klass; }
使用JDK8进行更新正确代码的最低要求是
和
{@code}
./** * test. * *{@code **/void test(Class super T> type) { * System.out.printf("hello, world\n"); * } * } 产量
void test(Class super T> type) { System.out.printf("hello, world\n"); } 并且可选的周边
插入缩进.
/** * test. * **/{@code *void test(Class super T> type) { * System.out.printf("hello, world\n"); * } * } 产量
void test(Class super T> type) { System.out.printf("hello, world\n"); } 插入
或包围
并