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:コメントを宣言します.メソッド名はパラメータ名に対応し、値タイプはパラメータタイプに対応します.