1. アノテーションの宣言: アノテーションは @interface を通じて宣言できます。
@Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface BindView { int value(); }
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Get { String value() default ""; }
@Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) public @interface Queue { String value() ; }
2. @Target メタアノテーション、アノテーションのアノテーション、その値は ElementType 列挙クラスで定義されます。
@ターゲット アノテーションは、カスタム アノテーション コードの場所を定義するために使用されます。
@Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.ANNOTATION_TYPE}) public @interface Target { ElementType[] value(); }
1) ElementType.FIELD はメンバー変数で使用されます。
2) ElementType.METHOD はメンバー メソッドで使用されます。
3) ElementType.PARAMETER はメソッドのパラメーターで使用されます。
4) ElementType.TYPE はクラスとインターフェイスで使用されます。
5) ElementType.ANNOTATION_TYPE は注釈で使用されます。
3.@Retention メタアノテーション。値は RetentionPolicy 列挙クラスで定義されます。
は、注釈が有効になる段階を定義するために使用されます:
1) ソース: 注釈はソース コード段階でのみ有効であり、バイトコードにはコンパイルされません。
2) CLASS: 注釈はソース コードおよびバイトコードの段階では有効ですが、実行段階では存在しません。
3) 実行時: 注釈はソース コード、バイトコード、および実行時のフェーズで有効であり、最も一般的に使用されます。
@Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.ANNOTATION_TYPE}) public @interface Retention { RetentionPolicy value(); }
public enum RetentionPolicy { SOURCE, CLASS, RUNTIME; private RetentionPolicy() { } }
2. 注釈の使用
@BindView(R.id.start_activity) TextView startTextView;
@Get("http://www.baidu.com") Call getPerson(@Queue("name") String name,@Queue("200")int price); @Get("http://www.baidu.com") Call getPerson();
注釈の使用は非常に簡単です。
アノテーションだけでは意味がないため、他のテクノロジーと組み合わせて使用する必要があります。
アプリケーション:
1) アノテーション Apt アノテーション プロセッサ、Java コード、データバインディング、バターナイフ、ダガー 2 ヒルトを生成
2) アノテーション コード埋め込みポイント
3 ) アノテーションを付けるリフレクション動的プロキシのレトロフィット xUtils ライフサイクル
以上がJava メタアノテーションの保持を宣言する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。