ホームページ >Java >&#&チュートリアル >Java メタアノテーションの保持を宣言する方法

Java メタアノテーションの保持を宣言する方法

王林
王林転載
2023-05-03 09:13:161418ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。