Javadoc 注释中的多行代码示例

2022-08-31 04:14:47

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


答案 1

除了已经提到的标签之外,您还应该使用JavaDoc注释,这将使HTML实体问题(特别是泛型)的生活变得更加轻松,例如:<pre>@code

* <pre>
* {@code
* Set<String> s;
* System.out.println(s);
* }
* </pre>

将给出正确的 HTML 输出:

Set<String> s;
System.out.println(s);

虽然省略块(或使用标记)将导致HTML如下:@code<code>

Set s;
System.out.println(s);

作为参考,可以在此处找到 Java SE 8 中可用的标记描述的完整列表。


答案 2

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

  • 使用 old - 标记以防止大括号被解释<code>
  • “new” 的用法 - 用于获取输出中包含的泛型的标记{@code ...}
  • 通过 “” 转义 @ 登录,因为 javadoc 生成器在那里“倾斜”,因为 @ 直接在打开的大括号之后@Override{@literal @}Override
  • 删除 前面的一个空格,以补偿内部空间并保持对齐{@code{@literal

javadoc code:

/** 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();