Java元註解Retention代碼示例介紹

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

以上應用會在後面的文章繼續分享。如果通過反射來獲取註解上的值,Retrofit框架原理。

到此這篇關於Java元註解Retention代碼示例介紹的文章就介紹到這瞭,更多相關Java Retention內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: