578

メソッドの 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 コメントでコード例をフォーマットする最良の方法は何ですか?

4

18 に答える 18

808

すでに述べた<pre>タグに加えて、JavaDocアノテーションも使用する必要があります@code。これにより、HTMLエンティティの問題(特にジェネリックスの場合)に関して、作業がはるかに簡単になります。例:

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

正しいHTML出力を提供します:

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

ブロックを省略している間@code(または<code>タグを使用している間)、次のようなHTMLになります。

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

参考までに、JavaSE8で使用可能なタグの説明の完全なリストはここにあります。

于 2009-02-12T16:26:42.633 に答える
180

javadocコメントに特定のコード例を含めるのは非常に困難でした。これを共有したいと思います。
次の点に注意してください:

  • <code>中括弧が解釈されないようにするためのold-tagの使用
  • 「new」の使用法{@code ...}-出力に含まれるジェネリックを取得するためのタグ
  • @が中括弧の直後にあるため、javadocジェネレーターが「傾斜」しているため、@Override「」を介して@サインインをエスケープします。{@literal @}Override
  • {@codeとの前のスペースを1つ削除し{@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();
于 2012-11-22T12:13:56.307 に答える
41

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>
...
于 2009-02-12T15:59:31.247 に答える
25

<pre></pre>複数行のコードをタグで囲みます。

于 2009-02-12T15:56:51.720 に答える
18

<pre></pre>改行のタグと、{@code ... }ジェネリックのタグが必要です。しかし、開き括弧を<generic>タグと同じ行に配置することはできません。これは、すべてが再び 1 行に表示されるためです。

1 行で表示:

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

改行付きで表示:

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

もう1つの奇妙なことは、の右中括弧を貼り付けると、{@code表示されることです:

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

出力:

public List<Object> getObjects() 
{
   return objects;
}
}
于 2011-08-04T12:35:47.850 に答える
10
/**
 * <blockquote><pre>
 * {@code
 * public Foo(final Class<?> klass) {
 *     super();
 *     this.klass = klass;
 * }
 * }
 * </pre></blockquote>
 **/
  • <pre/>行を保存するために必要です。
  • {@code独自の行が必要です
  • <blockquote/>インデント用です。
public Foo(final Class<?> klass) {
    super();
    this.klass = klass;
}


JDK8で更新

適切なコードの最小要件は<pre/>{@code}です。

/**
 * test.
 *
 * <pre>{@code
 * <T> void test(Class<? super T> type) {
 *     System.out.printf("hello, world\n");
 * }
 * }</pre>
 */

収量

 <T> void test(Class<? super T> type) {
     System.out.printf("hello, world\n");
 }

オプションの周囲<blockquote/>はインデントを挿入します。

/**
 * test.
 *
 * <blockquote><pre>{@code
 * <T> void test(Class<? super T> type) {
 *     System.out.printf("hello, world\n");
 * }
 * }</pre></blockquote>
 */

収量

     <T> void test(Class<? super T> type) {
         System.out.printf("hello, world\n");
     }

および で挿入<p>または囲むと<p></p>警告が生成されます。

于 2014-03-05T10:14:01.967 に答える
5

次のスニップで見栄えの良いHTMLファイルを生成することができました-それはコード1に示されています。

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

(コード1)

コード1は、予想どおり、図1で生成されたjavadocHTMLページに変わりました。

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行に分割されています。コード2は、図2に示すように、生成されたjavadocHTMLファイルを生成します。

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

(図2)

スティーブBの提案(コード3)は最良の結果をもたらすようで、Alt + Shift+Fを押した後も期待どおりにフォーマットされたままです。

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

(コード3)

コード3を使用すると、図1に示すのと同じjavadocHTML出力が生成されます。

于 2013-02-21T15:26:37.790 に答える
3

との間には大きな違いが<blockquote><pre>...あり<pre>{@code....ます。前者はジェネリックスの型宣言を省略しますが、後者はそれを保持します。

E.g.: List<MyClass> myObject = null;List myObject = null;最初とList<MyClass> myObject = null;2番目のように 表示されます

于 2012-07-19T09:24:47.633 に答える
2

あなたが Android 開発者であれば、以下を使用できます。

<pre class=”prettyprint”&gt;

TODO:your code.

</pre>

Java コードを使用して Javadoc にコードをきれいに印刷します。

于 2015-08-29T09:02:09.500 に答える
1

「コード」を「プレ」に置き換えてみてください。HTML の pre タグはテキストを整形済みとしてマークし、すべての改行とスペースは入力したとおりに表示されます。

于 2009-02-12T15:58:40.953 に答える
0

Java SE 1.6を使用すると、すべての大文字のPRE識別子がJavadocでこれを行うための最良の方法のように見えます。

/**
 * <PRE>
 * insert code as you would anywhere else
 * </PRE>
 */

これを行う最も簡単な方法です。

java.awt.Eventメソッドから取得したjavadocの例:

/**
 * <PRE>
 *    int onmask = SHIFT_DOWN_MASK | BUTTON1_DOWN_MASK;
 *    int offmask = CTRL_DOWN_MASK;
 *    if ((event.getModifiersEx() & (onmask | offmask)) == onmask) {
 *        ...
 *    }
 * </PRE>
 */

これにより、通常のコード間隔と新しい行がそのままの状態で、通常のコードとまったく同じように見える出力が生成されます。

于 2012-06-07T15:20:54.200 に答える
0

サンプル コードを<pre class="brush: java"></pre>タグで囲み、公開された javadoc にはSyntaxHighlighterを使用します。IDE に悪影響を与えず、公開されたコード例を美しくします。

于 2011-09-07T05:28:50.713 に答える