溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java元注解Retention怎么聲明

發(fā)布時(shí)間:2022-08-27 14:42:15 來(lái)源:億速云 閱讀:145 作者:iii 欄目:開(kāi)發(fā)技術(shù)

今天小編給大家分享一下Java元注解Retention怎么聲明的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

1.注解聲明:通過(guò)@interface就可以聲明一個(gè)注解。

@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枚舉類(lèi)中。

@Target注解 用來(lái)定義我們自定義注解代碼的什么位置。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE})
public @interface Target {
    ElementType[] value();
}

1)ElementType.FIELD 使用在成員變量上。

2)ElementType.METHOD 使用在成員方法上。

3)ElementType.PARAMETER 使用在方法參數(shù)上。

4)ElementType.TYPE 使用在類(lèi)、接口上。

5)ElementType.ANNOTATION_TYPE 使用在注解上。

3.@Retention 元注解,取值定義在RetentionPolicy枚舉類(lèi)中。

用來(lái)定義注解生效的階段:

1)SOURCE:注解只在源碼階段有效,不會(huì)編譯到字節(jié)碼中。

2)CLASS:注解在源碼、字節(jié)碼階段有效,運(yùn)行階段不存在。

3)RUNTIME:注解在源碼、字節(jié)碼、運(yùn)行階段有效,也是最長(zhǎng)用的。

@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();

注解的使用很簡(jiǎn)單。

注解單獨(dú)存在沒(méi)有任何意義,必須配合其他技術(shù)。

應(yīng)用:

1)注解+Apt注解處理器,生產(chǎn)java代碼 ,databinding、butterknife、dagger2 hilt

2)注解+代碼埋點(diǎn)

3)注解+反射+動(dòng)態(tài)代理 retrofit xUtils lifecycle

以上就是“Java元注解Retention怎么聲明”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI