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