Post

Javadoc 태그

1. Javadoc 태그

주석에는 설명문과 Javadoc 태그를 작성할 수 있다. 인수와 반환 값, 예외 및 참고하는 곳의 지정 등 해당 Javadoc 태그와 값이 같이 지정된다.

1) @author 태그

@author 태그는 클래스, 인터페이스 등에 작성하고, 작성자를 지정하는 데 사용한다.

1
2
3
4
5
6
7
8
@author name-text

저자에 관하여 지정한다.

작성 위치: 개요, 패키지, 클래스, 인터페이스
중복 작성: 가능
출력 형식: 작성자
기     타: "-author" 옵션 필요

주로 클래스 등의 주석을 작성하고, 저자가 누구인지를 지정할 때에 사용한다. 같은 주석 내에서 여러 번 지정할 수 있다.

1
2
3
4
5
/**
 * 주석의 설명문
 * @author devkuma
 * @author kimkc
 */

@author 태그가 중복으로 작성된 경우는 출력될 때 각각의 저자가 쉼표(,)로 구분하여 한 줄에 모아서 출력된다. Javadoc의 -author 옵션을 지정한 경우에만 출력이 된다.

다음과 같이 실행한다.

1
$ javadoc -d doc -author FileName.java

2) @version 태그

@version 태그는 클래스, 인터페이스 등에 작성하고 소프트웨어의 버전을 지정하기 위해 사용한다.

1
2
3
4
5
6
7
8
@version version-text

소프트웨어 버전을 지정한다.

작성 위치: 개요, 패키지, 클래스, 인터페이스
중복 작성: 가능
출력 형식: 버전
기     타: "-version" 옵션 필요

소프트웨어의 현재 버전을 지정할 때에 사용한다. 같은 주석 내에서 여러 번 지정할 수 있다.

1
2
3
4
5
6
/**
 * 주석의 설명문
 * 
 * @version 1.0
 * @version Project 2.0.1
 */

다음과 같이 실행한다.

1
$ javadoc -d doc -version FileName.java

3) @see 태그

@see 태그는 관련 항목으로 외부 링크 또는 텍스트를 표시하거나, 다른 필드나 메소드에 대한 모든 참조 링크를 나타낼 때 사용한다.

1
2
3
4
5
6
7
@see reference

관련 항목으로 텍스트와 링크를 표시

작성 위치: 개요, 패키지, 클래스, 인터페이스, 필드, 메소드
중복 작성: 가능
출력 형식: 관련 항목

(1) 텍스트, 외부 링크

@see 태그는 텍스트 및 외부 링크로의 사용한다. 먼저 관련 항목의 위치 정보를 문자열을 표시하는 경우이다.

1
@see "string"

HTML 문장의 <a> 태그와 같은 형식으로 링크 및 레이블을 지정한다. 사용하는 방법은 다음과 같다.

1
2
3
4
/**
 * 주석의 설명문
 * @see <a href="https://dejavuhyo.github.io">공대베짱이</a>
 */

@see 태그가 중복으로 작성된 경우는 출력될 때 각각의 링크 레이블이 쉼표(,)로 구분하여 한 줄에 모아서 출력된다.

(2) 참조 링크

@see 태그의 또 다른 사용법으로 다른 필드나 메소드에 대한 참조 링크를 표시하기 위해 사용한다.

다른 필드나 메소드에 대한 참조 링크를 표시하는 경우이다.

1
@see package.class#member label

package.class#member 형식으로 지정한 다른 메소드에 대한 링크를 만든다. 링크 레이블로 label을 표시하고 있지만 ‘label’은 선택 사항이다. 생략한 경우는 대상 메소드명으로 표시된다.

1
2
3
4
/**
 * 주석의 설명문
 * @see Sample08_02#setSize(int, int) setSize
 */

위에서는 패키지명을 생략하였다. 이와 같이 패키지명을 생략하거나 클래스명까지 생략하여 작성되었으면 생략된 부분을 다음의 순서로 지정된 이름을 검색한다.

  • 현재 클래스 또는 인터페이스

  • 외부를 둘러싸고 있는 클래스와 인터페이스 (가장 가까운 것으로부터 검색)

  • 슈퍼 클래스와 슈퍼 인터페이스 (가장 가까운 것으로부터 검색)

  • 현재 패키지

  • import 패키지, 클래스 및 인터페이스 (import 문의 순서에 따라 검색)

항상 전체 이름으로 패키지에서 멤버까지 지정하면 확실하겠지만, 주석이 너무 길어져 버리는 경우가 있다. 생략하게 되면 작성된 주석 부분을 간결하게 작성할 수 있다.

공식 자료에 의하면 다음과 같은 작성 방법이 있다.

현재 클래스의 멤버를 참조한다.

1
2
3
4
5
@see #field
@see #method(Type, Type,...)
@see #method(Type argname, Type argname,...)
@see #constructor(Type, Type,...)
@see #constructor(Type argname, Type argname,...)

현재 또는 import된 패키지의 다른 클래스를 참조한다.

1
2
3
4
5
6
7
@see Class#field
@see Class#method(Type, Type,...)
@see Class#method(Type argname, Type argname,...)
@see Class#constructor(Type, Type,...)
@see Class#constructor(Type argname, Type argname,...)
@see Class.NestedClass
@see Class

다른 패키지의 요소를 참조한다. (확실)

1
2
3
4
5
6
7
8
@see package.Class#field
@see package.Class#method(Type, Type,...)
@see package.Class#method(Type argname, Type argname,...)
@see package.Class#constructor(Type, Type,...)
@see package.Class#constructor(Type argname, Type argname,...)
@see package.Class.NestedClass
@see package.Class
@see package

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

4) @deprecated 태그

@deprecated 태그는 클래스나 메소드 등을 더 이상 사용이 권장하지 않는 경우에 사용한다. 사용이 권장되지 않는다는 것은 사용이 불가능하다는 것은 아니다. 다만 권장을 하지 않고 차후에 없어질 수도 있다는 것을 의미한다.

1
2
3
4
5
6
7
@deprecated deprecated-text

사용이 권장하지 않는 경우에 지정한다.

작성 위치: 개요, 패키지, 클래스, 인터페이스, 필드, 메소드
중복 작성: 불가능
출력 형식: Deprecated. + 입력한 문자열

사용을 권장하지 않게 된 이유 등을 문자열로 작성한다. 사용 방법은 다음과 같다.

1
2
3
4
/**
 * 주석의 설명문
 * @deprecated 다른 방법으로 대체되었다.
 */

또한, 대체하는 메소드나 클래스 등의 링크를 따라 지정한다. 링크 지정은 {@link} 태그를 사용한다.

1
2
3
4
/**
 * 주석의 설명문
 * @deprecated 다른 메소드로 대체되었다 {@link #setScale ()}
 */

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

5) @since 태그

@since 태그 도입된 버전을 표시하는 경우에 사용한다. @version 태그는 현재의 버전을 나타내지만 @since`` 태그는 어떤 버전에서 도입되었는지 나타내는 점이 다르다.

`text @since since-text

도입 된 버전을 표시한다.

작성 위치: 개요, 패키지, 클래스, 인터페이스, 필드, 메소드 중복 작성: 가능 출력 형식: 도입 된 버전

1
2
3
4
5
6
7
8
버전 등을 나타내는 문자열을 지정한다. 사용법은 다음과 같다.

```text
/**
 * 주석의 설명문
 * @since 2.5.1
 */

@since 태그가 중복으로 작성된 경우는 출력될 때 각각의 버전은 쉼표(,)로 구분하여 한 줄에 모아서 출력된다.

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

6) @param 태그

@param 태그는 매개 변수에 대한 설명을 표시할 때 사용한다.

1
2
3
4
5
6
7
@param parameter-name description

매개 변수에 대한 설명을 표시한다.

작성 위치: 메소드
중복 작성: 가능
츌력 형식: 매개 변수명 및 설명

@author 태그가 중복으로 작성된 경우는 출력될 때 각각의 저자가 쉼표(,)로 구분하여 한 줄에 모아서 출력된다.

메소드의 매개 변수명과 매개 변수에 대한 설명을 작성한다. 사용 방법은 다음과 같다.

1
2
3
4
5
/**
 * 주석의 설명문
 * @param width 폭
 * @param height 높이
 */

설명 부분은 여러 줄에 걸쳐 작성 할 수 있다. 여러 줄에 걸쳐있는 것을 표현하는 방법은 특별한 작성법이 있는 것은 아니다.

1
2
3
4
5
6
7
/**
 * 댓글의 설명
 * @param width 폭
 * width 대한 설명 2번째 줄
 * width 대한 설명 3번째 줄
 * @param height 높이
 */

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

7) @return 태그

@return 태그는 반환 값에 대한 설명(데이터 유형 및 범위 등)을 표시할 때 사용한다.

1
2
3
4
5
6
7
@return description

반환 값에 대한 설명을 표시

기술 위치: 메소드
복수 작성: 불가능
출력 형식: 반환 값

메소드의 반환 값에 대한 설명을 작성한다. 사용법은 다음과 같다.

1
2
3
4
/**
 * 주석의 설명문
 * @return 계산한 면적
 */

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

8) @throws, @exception 태그

@throws 태그는 발생할 수 있는 예외에 대한 설명을 표시할 때 사용한다. 그리고 @exception 태그와 @throws 태그는 태그 이름이 다를 뿐 동일하게 사용한다.

1
2
3
4
5
6
7
@throws class-name description

예외에 대한 설명을 표시

작성 위치: 메소드
중복 작성: 가능
출력 형식: Throws

메소드 내에서 발생하는 예외에 대한 예외 클래스 이름과 설명을 입력한다. 사용 방법은 다음과 같다.

1
2
3
4
5
/ **
 * 주석의 설명문
 * 
 * @throws java.io.FileNotFoundException 지정된 파일을 찾을 수 없습니다
 * /

클래스 이름은 전체 패키지명 까지 모두 지정되지만, 패키지 이름이 생략된 경우에는 다음의 순서에 따라 검색한다.

  • 현재의 클래스 또는 인터페이스

  • 외부를 둘러싸고 있는 클래스와 인터페이스 (가장 가까운 것으로부터 검색)

  • 슈퍼 클래스와 슈퍼 인터페이스 (가장 가까운 것으로부터 검색)

  • 현재 패키지

  • import 패키지, 클래스 및 인터페이스 (import 문장의 순서에 따라 검색)

여러 @throws 태그가 지정되는 경우에는 각각이 다른 행으로 표시된다.

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

{@link} 태그는 다른 Javadoc 태그 중에 참조 링크를 표시할 경우에 사용한다. 지금까지의 태그들은 모두 블록 태그라고 불리는 반면에 이 태그는 인라인 태그라고 한다. 인라인 태그는 {}로 묶어 사용하여 주석을 설명문 안이나 다른 블록 태그 안의 문자열의 부분에 사용할 수 있다.

{@linkplain} 태그는 {@link} 태그와 기본적인 사용법은 동일하다. 다른 Javadoc 태그에서 문자열을 표시할 위치에 참조 링크를 표시할 경우에 사용한다. 다른 점은 {@link} 태그를 사용하는 경우 연결 문자열은 코드 텍스트로 표시되는 반면, {@linkplain} 태그의 경우는 링크가 된 문자열을 일반 텍스트로 표시되는 점뿐이다.

1
2
3
4
5
6
{@link package.class#member label}

블록 태그 안의 설명문이나 문자열 부분에서 참조 링크 표시

작성 위치: 개요, 패키지, 클래스, 인터페이스, 필드, 메소드
중복 작성: 가능

‘package.class#member’ 형식으로 지정하는 다른 메소드에 대한 링크를 만든다. 링크 레이블에 지정된 ‘label’이 표시되지만, ‘label’은 선택 사항이다. 생략한 경우는 대상 메소드명으로 표시된다. 기본적인 사용법은 @see 태그와 동일하다.

1
2
3
4
/ **
 * 주석의 설명문
 * 다음 메소드 {@link Sample14#setSize(int, int) setSize}를 참조
 * /

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

10) {@code} 태그

{@code} 태그는 Javadoc에 예제 코드 작성시 사용된다.

1
2
3
4
5
6
{@code source-code}

예제 코드 표시

작성 위치: 개요, 패키지, 클래스, 인터페이스, 필드, 메소드
중복 작성: 가능

설명에 예제 코드를 첨부할 영에 사용한다. 사용 방법 다음과 같다.

1
2
3
4
5
6
7
8
9
10
/**
 * 주석의 설명문
 * 
 * <pre>
 * {@code
 * Foo foo = new Foo();
 * foo.foo();
 * }
 * </pre>
 */

설명문에 예제 코드를 첨부할 경우 {@code} 태그만 사용해도 되지만, 줄 바꿈이 필요할 시에는 HTML <pre> 태그를 같이 사용해야 한다.

다음과 같이 실행한다.

1
$ javadoc -d doc FileName.java

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.