[java] Javadoc 주석의 여러 줄 코드 예제

메소드에 대한 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 주석에서 코드 예제를 형식화하는 가장 좋은 방법은 무엇입니까?



답변

이미 언급 된 <pre>태그 외에도@code JavaDoc 주석을 이렇게하면 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);

(참고로 Java SE 8 태그 설명은 여기에서 찾을 수 있습니다 : Javadoc 태그 )


답변

javadoc 주석에 특정 코드 예제를 포함시키는 데 정말 힘든 시간을 보냈습니다. 이것을 공유하고 싶습니다.
다음 사항에 유의하십시오.

  • <code>중괄호가 해석되지 않도록하는 오래된 태그 사용법
  • “new”사용법 {@code ...}-출력에 포함 된 제네릭을 얻기위한 태그
  • javadoc 생성기가 “기울기”하기 때문에 @ @Override” 를 통해 @ 기호를 이스케이프 처리{@literal @}Override
  • 앞의 하나의 공간을 제거 {@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();


답변

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>
...


답변

여러 줄 코드를 <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;
}
}


답변

/**
 * <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>수율 경고.


답변

코드 1에 표시된 다음 코드 조각으로 멋진 HTML 파일을 생성 할 수있었습니다.

 * <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는 그림 2와 같이 생성 된 javadoc HTML 파일을 생성합니다.

< 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 출력이 생성됩니다.