標準アノテーション
@Override:注釈付きメソッドは、親クラス(インターフェース)継承されているか否かを検出
@Deprecated:ノートの内容は、廃止された発現
抑制警告に近い不適切なコンパイラ警告メッセージ:@SuppressWarningsを
カスタム注釈
フォーマット
元注解
public @interface 注解名称{
属性列表
}
自然:注釈は継承デフォルト注釈インタフェースという本質的インターフェースである
属性メンバーはのインターフェイスのメソッドを呼び出すことができます
要件を:
- 戻り値の型
の基本データ型の
文字列の
列挙
ノート
配列の種類以上 - プロパティを定義し、使用中のプロパティの割り当てを与え、何の割り当て後、あなたがメソッドの後に属性にデフォルトの初期値をデフォルトを追加することができます
唯一の割り当てするプロパティの必要性や属性名の値ならば、値を省略することができ、直接の値への書き込み
時に配列の割り当て唯一の配列値がある場合、中括弧{}値小包、{}を省略してもよいです
元のメモ
ノート注釈
Javaは4元のノートを持っています@Retention
@Target
@Document
@Inherited;
リテンション1. @:予約済みのノートの段階を記述する
- @Retention(RetentionPolicy.RUNTIME):現在のクラスのバイトコードファイルに保存された注釈、および
jvm
読み取り
ターゲット2 @:場所アノテーションはの役割を記述することができます
- @Target(ElementType.ANNOTATION_TYPE)
TYPE
:それはクラスに基づいて行動することができますMETHOD
:それは法に基づいて行動することができますFIELD
:これは、メンバ変数に作用することができます
3. @文書化の注釈の説明はに描かれているかどうか:api
ドキュメント
@ 4.継承:サブクラス缶继承
コメントの親クラス(コメントは、親クラスのコメントです)
要素を変形ノート
RetentionPolicyは:注釈を保持する程度を指します。
@Retention(RetentionPolicy.SOURCE)
これは、クラスのバイトコードファイルに含まれていない、唯一のソースコード注釈に存在します@Retention(RetentionPolicy.CLASS)
デフォルトの保持ポリシー、注釈は、クラスのバイトコードファイル内に存在しますが、実行時には利用できません@Retention(RetentionPolicy.RUNTIME)
注釈は、クラスのバイトコードファイル内に存在し、実行時に反射することによって得ることができます
ElementTypeは:ターゲットの役割のノートを参照します。
@Target(ElementType.TYPE)
インタフェース、クラス、列挙、注釈@Target(ElementType.FIELD)
フィールド、列挙定数@Target(ElementType.METHOD)
方法@Target(ElementType.PARAMETER)
メソッドのパラメータ@Target(ElementType.CONSTRUCTOR)
コンストラクタ@Target(ElementType.LOCAL_VARIABLE)
ローカル変数@Target(ElementType.ANNOTATION_TYPE)
コメント@Target(ElementType.PACKAGE)
パッケージ
プロパティ値定義された注釈の値を取得します。
- 注釈は、オブジェクトの位置を定義する取得
- 指定されたコメントの取得
getAnnotationを(クラス) - 抽象メソッド呼び出し注釈のgetプロパティ値が設定され
プロノート
@Target(value= {ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface pro {
String className();
String methodName();
}
プロパティ値を取得します。
@pro(className = "测试.Demo1",methodName = "show")
public class Test {
public static void main(String [] args) {
//获取该类的字节码对象
Class<Test> testclass = Test.class;
//获取注解对象
pro an=testclass.getAnnotation(pro.class);//其实就是在内存中生成了一个该注解接口的子类对象
//调用注解对象中定义的抽象方法,获取返回值
String className =an.className();
String methodName =an.methodName();
System.out.println(className);
System.out.println(methodName);
}
}