我有一个小代码示例,我想在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注释中格式化代码示例的最佳方法是什么?


当前回答

java源代码中有很多这样的好例子。下面是"String.java"头部的一个例子:

....
 * is equivalent to:
 * <p><blockquote><pre>
 *     char data[] = {'a', 'b', 'c'};
 *     String str = new String(data);
 * </pre></blockquote><p>
 * Here are some more examples of how strings can be used:
 * <p><blockquote><pre>
 *     System.out.println("abc");
 *     String cde = "cde";
 *     System.out.println("abc" + cde);
 *     String c = "abc".substring(2,3);
 *     String d = cde.substring(1, 2);
 * </pre></blockquote>
...

其他回答

我能够用下面的代码片段生成好看的HTML文件——代码1中显示了它。

 * <pre>
 * {@code
 * A-->B
 *  \
 *   C-->D
 *    \   \
 *     G   E-->F
 * }
 *</pre>

(代码1)

如图1所示,代码1变成了生成的javadoc HTML页面。

A-->B
 \
  C-->D
   \   \
    G   E-->F

(图1)

然而,在NetBeans 7.2中,如果你按Alt+Shift+F(重新格式化当前文件),代码1就会变成代码2。

 * <
 * pre>
 * {@code
 * A-->B
 *  \
 *   C-->D
 *    \   \
 *     G   E-->F
 * }
 * </pre>

(代码2)

第一个<pre>现在被分成两行。代码2生成生成的javadoc HTML文件,如图2所示。

< pre> A-->B \ C-->D \ \ G E-->F

(图2)

Steve B的建议(代码3)似乎给出了最好的结果,即使在按Alt+Shift+F后仍然保持格式化。

*<p><blockquote><pre>         
* A-->B
*  \
*   C-->D
*    \   \
*     G   E-->F
* </pre></blockquote>

(3)代码

使用代码3产生与图1所示相同的javadoc HTML输出。

在javadoc注释中包含特定的代码示例时,我遇到了很大的困难。我想分享这个。 请注意以下事项:

使用旧的<code> -标签来防止花括号被解释 new {@code…} -标签来获取输出中包含的泛型 @Override中的@符号通过"{@literal @}Override"转义,因为javadoc生成器在那里“倾斜”,因为@直接放在左花括号后面 在{@code和{@literal前面删除一个空格,以补偿内部空格并保持对齐

javadoc代码:

/** this methods adds a specific translator from one type to another type. `
  * i.e.
  * <pre>
  * <code>new BeanTranslator.Builder()
  *   .translate(
  *     new{@code Translator<String, Integer>}(String.class, Integer.class){
  *      {@literal @}Override
  *       public Integer translate(String instance) {
  *         return Integer.valueOf(instance);
  *       }})
  *   .build();
  * </code>
  * </pre>
  * @param translator
  */

被打印为

new BeanTranslator.Builder()
  .translate(
    new Translator<String, Integer>(String.class, Integer.class){
      @Override
      public Integer translate(String instance) {
        return Integer.valueOf(instance);
      }})
  .build();

如果你是Android开发者,你可以使用:

<pre class=”prettyprint”>

TODO:your code.

</pre>

用Java代码在Javadoc中漂亮地打印代码。

用<pre></pre>标签将多行代码括起来。

换行符需要<pre></pre>标签,{@code…}用于泛型。但是不允许将开始大括号与<generic>标记放在同一行上,因为这样所有内容将再次显示在一行上。

显示在一行上:

* ..
* <pre>
* {@code
* public List<Object> getObjects() {
*    return objects;
* }
* </pre>
* ..

显示带有换行符:

* ..
* <pre>
* {@code
* public List<Object> getObjects() 
* {
*    return objects;
* }
* </pre>
* ..

另一件奇怪的事情是,当你粘贴{@code的右大括号时,它会显示:

* ..
* <pre>
* {@code
*   public List<Object> getObjects() 
*   {
*     return objects;
*   }
* }
* </pre>
* ..

输出:

public List<Object> getObjects() 
{
   return objects;
}
}