首頁  >  文章  >  Java  >  Java元註解Retention怎麼聲明

Java元註解Retention怎麼聲明

王林
王林轉載
2023-05-03 09:13:161383瀏覽

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枚舉類別。

@Target註解 用來定義我們自訂註解程式碼的什麼位置。

@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)SOURCE:註解只在原始碼階段有效,不會編譯到字節碼。

2)CLASS:註解在原始碼、字節碼階段有效,運作階段不存在。

3)RUNTIME:註解在原始碼、字節碼、運行階段有效,也是最長用的。

@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程式碼,databinding、butterknife、dagger2 hilt

2)註解程式碼埋點

3)註解反射動態代理retrofit xUtils lifecycle

#####

以上是Java元註解Retention怎麼聲明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除