Java注記@Target、@Retention、@Documented、@Inherited

1019 ワード

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Ann{
    String value() default "";
}

@Target注記:修飾されたこの注記の使用範囲、すなわち記述された注記がどこで使用できるかを示します.
ElementTypeの値:
    -  TYPE:クラス、インタフェースまたは列挙;
    -  FIELD:ドメイン、列挙定数を含む;
    -  METHOD:方法;
    -  PARAMETER:パラメータ;
    -  COSTRUCTOR:構造方法;
    -  LOCAL_VARABLE:ローカル変数;
    -  ANNOTATION_TYPE:注記タイプ;
    -  PACKAGE:パッケージ;
 
@Retention注記:修飾された注記の生存期間、すなわちどの段階まで保持されるかを示します.
RetentionPolicyの値:
    -  SOURCE:ソースレベルは保持され、コンパイル後に破棄されます.
    -  CLASS:コンパイルレベルは保持され、コンパイルされたclassファイルには存在し、jvm実行時に破棄されます.これがデフォルトです.
​​​​​​​    -  RUNTIME:実行レベル保留、コンパイル後のclassファイルに存在し、jvm実行時保留、反射呼び出し可能.
 
@Documented注記:修飾された注記を指定します.javadocのようなツールでドキュメント化できます.タグのみを担当し、メンバーの値は取得されません.
 
@Inherited注記:子クラスが親クラスの注記を継承できるようにします.
 
@interface:コメントを宣言します.メソッド名はパラメータ名に対応し、値タイプはパラメータタイプに対応します.