特殊なアノテーション
型定義の際や、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を書く中で見慣れないアノテーションに出会ったら、
その度追記する予定。