LoginSignup
96
91

More than 5 years have passed since last update.

ちょっと特殊なJavaのアノテーション

Last updated at Posted at 2015-07-15

特殊なアノテーション

型定義の際や、JavaDocに記述できるアノテーション(タグ)について紹介、
というよりメモ。

アノテーションを独自定義する

interface

アノテーションの宣言を行う。

@interface OriginAnnotation {
    String value();
}

メタアノテーション

Documented

型の宣言に@Documentedが付加されていれば、
その注釈は注釈付き要素の公開APIの一部となる。

Retention

アノテーションの読み込みタイミングを指定できる。
java.lang.annotation.RetentionPolicyから選択

  • CLASS: コンパイル時にクラスファイルに記録される。実行時にVMに読み込まれない。
  • RUNTIME: 実行時にVMに読み込まれる
  • SOURCE: コンパイル時に破棄

Target

注釈型が適用可能なプログラム要素の種類を示す。
java.lang.annotation.ElementTypeから選択

  • ANNOTATION_TYPE: アノテーションに適用可
  • CONSTRUCTOR: コンストラクタに適用可
  • FIELD: フィールドに適用可
  • LOCAL_VARIABLE: ローカルに適用可
  • METHOD: メソッドに適用可
  • PACKAGE: パッケージに適用可
  • PARAMETER: 引数に適用可
  • TYPE Class、Interface、Enum可

上のをAnnotationたちを合わせる

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface OriginalAnnotation {
    String value();
}

JavaDocタグ(JavaDoc内で利用するアノテーション)

author

筆者を示す。

/**
 * @author kashira2339
 */

param

引数の変数名と説明。

/**
 * @param email 会員のEメールアドレス
 */

return

返り値の説明。

/**
 * @return 検索結果
 */

throws, exception

メソッド内で発生する例外のクラス名、及びその説明を記述する。

/**
 * @exception IOException 文字入力エラー
 */

link

JavaDoc内に参照可能なリンクを作成する。

/**
 * @exception {@link IOException} 文字入力エラー
 */

literal

テキスト向け。不等号を書ける。

/**
 * {@literal A<B>}
 */

code

JavaDoc内にコードを書く時。

/**
 * {@code null}
 */

inheritDoc

オーバーライドしたメソッドのJavaDoc部分に付与すると、
スーパークラスにて記述されたJavaDocを参照できる。

/**
 * {@inheritDoc}
 */
@Override
public String getString() {
    return path;
}

まとめ

Javaを書く中で見慣れないアノテーションに出会ったら、
その度追記する予定。

96
91
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
96
91